Как обрабатывать события с несколькими сегментами управления в одном представлении

У меня два сегментарных элемента управления в представлении viewcontroller. Как я могу обрабатывать события крана обоих сегментированных контроллеров?

Установите свойство tag на каждый сегментированный элемент управления на другое целое число. Затем в вашем методе, который вы устанавливаете как действие, когда изменяется значение, проверьте, какое целое значение имеет свойство tag используя [sender tag] .

Есть два способа сделать это.

  1. Добавить различные действия для каждого элемента управления сегментами
  2. Добавьте те же действия для каждого управления сегментами и проверьте, какой элемент управления используется с помощью его тега.

     [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 } 

Назначьте два разных действия для этих сегментированных элементов управления:

 [segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged]; 

Быстрая версия:

  @IBAction func yourFunctionName(sender: UISegmentedControl) { if (sender.selectedSegmentIndex == 0){//choice 1 }else{//choice 2 } } 
Interesting Posts
Давайте будем гением компьютера.