【发布时间】:2011-11-25 05:20:48
【问题描述】:
我的视图控制器视图中有 2 个分段控件。如何处理两个分段控制器的点击事件?
【问题讨论】:
标签: iphone ios uisegmentedcontrol
我的视图控制器视图中有 2 个分段控件。如何处理两个分段控制器的点击事件?
【问题讨论】:
标签: iphone ios uisegmentedcontrol
有两种方法可以做到这一点。
为每个段控件添加相同的操作并使用其标签检查哪个控件被点击。
[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 文档说:
您使用 UIControlEventValueChanged 常量为分段控件注册目标操作方法,如下所示。
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
因此,您只需为每个分段控件注册操作即可。
【讨论】:
将每个分段控件的tag 属性设置为不同的整数。然后在您设置为值更改时的操作的方法中,使用[sender tag] 检查tag 属性设置为哪个整数。
【讨论】:
您可以使用分段的选定模式:
UISegmentedControl *tempSegment = sender;
if ([tempSegment selectedSegmentIndex] == 0){
//first Action
}
else if ([tempSegment selectedSegmentIndex] == 1){
//second Action
}
【讨论】:
为这些分段控件分配两个不同的操作:
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
【讨论】:
Swift 版本:
@IBAction func yourFunctionName(sender: UISegmentedControl) {
if (sender.selectedSegmentIndex == 0){//choice 1
}else{//choice 2
}
}
【讨论】: