Как обрабатывать события нескольких сегментированных элементов управления в одном представлении - PullRequest
4 голосов
/ 25 ноября 2011

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

Ответы [ 6 ]

11 голосов
/ 25 ноября 2011

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

  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
            }
        }
    }
    
3 голосов
/ 25 ноября 2011

В 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];

Итак, вам просто нужно зарегистрировать действие для каждого сегментированного элемента управления.

2 голосов
/ 08 июля 2012

Вы можете использовать выбранный режим сегмента:

UISegmentedControl *tempSegment = sender;
if ([tempSegment selectedSegmentIndex] == 0){
    //first Action
}
else if ([tempSegment selectedSegmentIndex] == 1){
    //second Action

}
2 голосов
/ 25 ноября 2011

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

1 голос
/ 25 ноября 2011

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

[segmentedControl addTarget:self
                 action:@selector(action:)
       forControlEvents:UIControlEventValueChanged];
0 голосов
/ 05 декабря 2014

Swift версия:

 @IBAction func yourFunctionName(sender: UISegmentedControl) {

        if (sender.selectedSegmentIndex == 0){//choice 1

        }else{//choice 2

    }
}
...