Как я могу переключить 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", все было хорошо.