Как я могу переключить UIsegmentedControll программно?
Как я могу переключить UIsegmentedControll программно?
Ответ 1
Свойство selectedSegmentIndex идентифицирует выбранный сегмент UISegmentedControl. Установите это свойство в любой действительный индекс сегмента или UISegmentedControlNoSegment (-1), чтобы отключить текущий выбор.
// select the first segment
segmented.selectedSegmentIndex = 0;
// turn off the current selection
segmented.selectedSegmentIndex = UISegmentedControlNoSegment;
Ответ 2
В качестве альтернативы, после того, как вы изменили вызов selectedSegmentIndex 'sendActionsForControlEvents:' например
segmentedControl.selectedSegmentIndex = 0
[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
Ответ 3
@jmstone ответ, true, это действие не будет вызывать событие valueChanged для этого элемента управления.
Один из способов преодолеть это - просто вызвать функцию самостоятельно:
segmentedControl.selectedSegmentIndex = 3;
[self valueChangedMethod:segmentedControl];
Это вызовет:
- (void)valueChangedMethod:(UISegmentedControl *)segmentedControl
{
//continue your code here...
}
Ответ 4
В Swift:
segmentedControl.selectedSegmentIndex = 1
Swift 2:
segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)
Swift 3:
segmentedControl.sendActions(for: UIControlEvents.valueChanged)
Ответ 5
У меня была аналогичная проблема, когда сегментированный элемент управления не менялся. Я называл "selectedSegmentIndex" и т.д. Слишком рано. Как только я позвонил ему после вызова "viewDidLoad", все было хорошо.