У меня есть 2 сегментированных элемента управления в моем представлении viewcontroller.Как я могу обработать события касания обоих сегментированных контроллеров?
Есть два способа сделать это.
Добавьте те же действия для каждого элемента управления сегмента и проверьте, какой элемент управления был выбран, используя его тег.
[yourSegmentedControl addTarget:self action:@selector(segmentSwitch:) forControlEvents:UIControlEventValueChanged];
- (IBAction)segmentSwitch:(id)sender { UISegmentedControl *segmentedControl = (UISegmentedControl *) sender; if(segmentedControl.tag == someTag) { if(segmentedControl.selectedSegmentIndex == 1) { // your code } else if(segmentedControl.selectedSegmentIndex == 2) { // your code } } else if(segmentedControl.tag == someTag) { if(segmentedControl.selectedSegmentIndex == 1) { // your code } else if(segmentedControl.selectedSegmentIndex == 2) { // your code } } }
В Apple Docs написано:
http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UISegmentedControl_Class/Reference/UISegmentedControl.html
Вы регистрируете методы целевого действия для сегментированного элемента управления, используя константу UIControlEventValueChanged, как показано ниже.
[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];
Итак, вам просто нужно зарегистрировать действие для каждого сегментированного элемента управления.
Вы можете использовать выбранный режим сегмента:
UISegmentedControl *tempSegment = sender; if ([tempSegment selectedSegmentIndex] == 0){ //first Action } else if ([tempSegment selectedSegmentIndex] == 1){ //second Action }
Установите для свойства tag каждого сегментированного элемента управления другое целое число. Затем в своем методе вы задаете действие для изменения значения, проверьте, какое целое число установлено в свойстве tag с использованием [sender tag].
tag
[sender tag]
Назначьте два разных действия этим сегментированным элементам управления:
Swift версия:
@IBAction func yourFunctionName(sender: UISegmentedControl) { if (sender.selectedSegmentIndex == 0){//choice 1 }else{//choice 2 } }