Как мне переключить UIsegmentedControll программно? - PullRequest
57 голосов
/ 11 марта 2011

Как мне переключить UISegmentedControll программно?

Ответы [ 5 ]

85 голосов
/ 11 марта 2011

Свойство selectedSegmentIndex идентифицирует выбранный сегмент UISegmentedControl. Задайте для этого свойства любой допустимый индекс сегмента или UISegmentedControlNoSegment (-1), чтобы отключить текущий выбор.

// select the first segment
segmented.selectedSegmentIndex = 0;

// turn off the current selection
segmented.selectedSegmentIndex = UISegmentedControlNoSegment;
82 голосов
/ 04 марта 2013

В качестве альтернативы, после того как вы изменили в selectedSegmentIndex вызов 'sendActionsForControlEvents:', например

segmentedControl.selectedSegmentIndex = 0

[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
24 голосов
/ 28 ноября 2012

@ jmstone response, true, это действие не вызовет событие valueChanged для этого элемента управления.

Один из способов преодолеть это - просто вызвать функцию самостоятельно:

segmentedControl.selectedSegmentIndex = 3;
[self valueChangedMethod:segmentedControl];

Это будет звонить:

- (void)valueChangedMethod:(UISegmentedControl *)segmentedControl
{
    //continue your code here...
}
22 голосов
/ 06 ноября 2015

В Swift:

segmentedControl.selectedSegmentIndex = 1

Swift 2:

segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)

Swift 3:

segmentedControl.sendActions(for: UIControlEvents.valueChanged)
2 голосов
/ 10 апреля 2013

У меня была похожая проблема, когда сегментированный элемент управления не менялся.Я звонил "selectedSegmentIndex" и т. Д. Слишком рано.Как только я назвал это после того, как "viewDidLoad" был вызван, тогда все было хорошо снова.

...