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