如何在单个视图中处理多个分段控件的事件

时间:2011-11-25 05:20:48

标签: iphone ios uisegmentedcontrol

我的viewcontroller视图中有2个分段控件。如何处理两个分段控制器的分接事件?

6 个答案:

答案 0 :(得分:11)

有两种方法可以做到。

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

答案 1 :(得分:3)

Apple文档说:

http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UISegmentedControl_Class/Reference/UISegmentedControl.html

  

使用UIControlEventValueChanged常量为分段控件注册目标操作方法,如下所示。

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

因此,您只需为每个分段控件注册操作。

答案 2 :(得分:2)

将每个分段控件上的tag属性设置为其他整数。然后在您的方法中设置为值更改时的操作,使用tag检查[sender tag]属性设置为哪个整数。

答案 3 :(得分:2)

您可以使用所选的细分模式:

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

}

答案 4 :(得分:1)

为这些分段控件分配两个不同的操作:

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

答案 5 :(得分:-1)

Swift版本:

 @IBAction func yourFunctionName(sender: UISegmentedControl) {

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

        }else{//choice 2

    }
}