UISegmentedControl setSelectedSegmentIndex проблема - PullRequest
1 голос
/ 11 января 2012

У меня странная проблема с UISegmentedControl.Я устанавливаю индекс выбранного сегмента, используя метод:

[self.toolbarSegmentedControl setSelectedSegmentIndex:0];

Итак, проблема в том, что обработчик щелчков:

- (IBAction)segmentedControlClick:(id)sender 

не вызывается в симуляторе, а под устройством - ISвызывается при передаче этого метода.Почему так и где неправильное и правильное поведение?

Ответы [ 2 ]

6 голосов
/ 11 января 2012

Ваш обработчик перехватывает событие UIControlEventValueChanged.

Когда вы изменяете значение UIControl программно, вы не должны рассчитывать на то, что это событие будет вызвано, потому что только пользовательские взаимодействия должны отправлять действия UIControl.

Вместо этого, если хотите, вы можете вызвать его самостоятельно:

[self.toolbarSegmentedControl setSelectedSegmentIndex:0];
[self.toolbarSegmentedControl sendActionsForControlEvents:UIControlEventValueChanged];

Это сделает это.

1 голос
/ 11 января 2012

Возможно, версия iOS на вашем устройстве отличается от версии вашего симулятора.Поведение setSelectedSegmentIndex изменилось в iOS5 - в частности, segmentChangeAction больше не вызывается в результате.См. этот другой вопрос переполнения стека для деталей.

...