我的viewcontroller视图中有2个分段控件。如何处理两个分段控制器的分接事件?
答案 0 :(得分:11)
有两种方法可以做到。
为每个细分控制添加相同的操作&检查使用其标签点击哪个控件。
[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文档说:
使用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
}
}