如何在单个视图中处理多个分段控件的事件
Posted
技术标签:
【中文标题】如何在单个视图中处理多个分段控件的事件【英文标题】:How to handle events of multiple segmented control in a single view 【发布时间】:2011-11-25 05:20:48 【问题描述】:我的视图控制器视图中有 2 个分段控件。如何处理两个分段控制器的点击事件?
【问题讨论】:
【参考方案1】:有两种方法可以做到这一点。
-
为每个段控件添加不同的操作
为每个段控件添加相同的操作并使用其标签检查哪个控件被点击。
[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
【讨论】:
【参考方案2】:Apple 文档说:
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISegmentedControl_Class/Reference/UISegmentedControl.html
您使用 UIControlEventValueChanged 常量为分段控件注册目标操作方法,如下所示。
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
因此,您只需为每个分段控件注册操作即可。
【讨论】:
【参考方案3】:将每个分段控件的tag
属性设置为不同的整数。然后在您设置为值更改时的操作的方法中,使用[sender tag]
检查tag
属性设置为哪个整数。
【讨论】:
【参考方案4】:您可以使用分段的选定模式:
UISegmentedControl *tempSegment = sender;
if ([tempSegment selectedSegmentIndex] == 0)
//first Action
else if ([tempSegment selectedSegmentIndex] == 1)
//second Action
【讨论】:
【参考方案5】:为这些分段控件分配两个不同的操作:
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
【讨论】:
【参考方案6】:Swift 版本:
@IBAction func yourFunctionName(sender: UISegmentedControl)
if (sender.selectedSegmentIndex == 0)//choice 1
else//choice 2
【讨论】:
以上是关于如何在单个视图中处理多个分段控件的事件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 的分段控件中调整 textLabel 的大小?
iPhone sdk如何使用分段控件显示的两个不同视图设置视图方向