如何检查用户是不是选择了 UISegmentedControl?
Posted
技术标签:
【中文标题】如何检查用户是不是选择了 UISegmentedControl?【英文标题】:How to check whether the UISegmentedControl is selected or not by user?如何检查用户是否选择了 UISegmentedControl? 【发布时间】:2011-08-23 07:35:37 【问题描述】:我有一个应用程序,我在其中动态分配 5 个UISegmentedControl
到视图中。最后有一个完成按钮。我的条件是继续下一步(按下完成按钮时),所有UISegmentControl
s“应由用户选择”。
segmentcontrol 中的默认选择是无。
如何在对完成按钮执行操作之前检查用户是否选择了我视图中的所有UISegmentedControls
?
【问题讨论】:
一次只能选择一个段,你说的我视图中的所有uisegmentedcontrol都被用户选择了是什么意思?您的意思是我视图中的所有uisegmentedcontrol 都已被用户选择? 可以选择一个选项。好的。但是我的视图中有 5 个 uisegmentedcontrol。如何在最后一次按下完成按钮之前检查是否所有选项都被选中?? 【参考方案1】:就在苹果文档中,这应该可以回答您的问题:
@property(nonatomic) NSInteger selectedSegmentIndex
讨论
默认值为UISegmentedControlNoSegment
(未选择段),直到用户触摸段。
希望您可以使用它来检查该值是否是用户选择的,以防止进入下一页。
【讨论】:
【参考方案2】:NSLog(@"%i", self.segment.selectedSegmentIndex);
如果未选择任何段,则此结果为 -1
。
【讨论】:
【参考方案3】:为 UIControlEventValueChanged 添加目标和操作。 从您在操作中给出的选择器中,检查哪个 segmentControl 已更改,并设置它的相应标志(例如:字符串数组,@"0" 表示未选择,@"1" 一旦选择)。
随时检查哪些标志未设置,相应的段控件从未被选中。
【讨论】:
【参考方案4】:这就是你创建 UISegmentedControl 的方式
NSArray *itemArray = [NSArray arrayWithObjects: @"Title1", @"Title2", @"Title3", @"Title4",nil];
segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake(0, 0, 310, 35);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 0;
[segmentedControl addTarget:self action:@selector(pickOne:) forControlEvents:UIControlEventValueChanged];
segmentedControl.tintColor=[UIColor grayColor];
然后查找选择了哪个段,
NSString *category =[segmentedControl titleForSegmentAtIndex: [segmentedControl selectedSegmentIndex]];
if(category==@"Title1")
//Do something here..
希望这会有所帮助....快乐编码
【讨论】:
代码的第二部分必须写在名为-(void)pickOne:(id)sender..的方法中(这是根据上面的代码..) 谢谢..但是我怎么知道所有的segmentcontrols都被选中了?? 选择所有段控件是什么意思....用户一次只能选择一个.... sry ..我怎么知道所有的uisegmentedcontrols都被选中了??我认为我有多个 uisegmentedcontrol?? 您可以通过将每个段控件的标记属性设置为唯一值来分别标识每个段控件...以上是关于如何检查用户是不是选择了 UISegmentedControl?的主要内容,如果未能解决你的问题,请参考以下文章