【问题标题】:Push to segmented control segment by segment's title按段标题推送到分段控制段
【发布时间】:2016-03-27 07:28:15
【问题描述】:
我有一个包含 3 个段的 UISegmentedControl。一旦我的应用程序启动,应用程序会自动从段 1 开始。我希望我的应用程序从段 3 开始。我不想像这样简单地选择段数组的索引:
self.segmentedControl.selectedSegmentIndex = 2;
我希望我的视图移动到包含某个标题的片段:
if (self.segmentControl.title isEqualToString:@"SomeTitle") {
//Do something
}
有没有办法做到这一点?
【问题讨论】:
标签:
ios
objective-c
uisegmentedcontrol
【解决方案1】:
int index=-1;
for (int i=0; i<3; i++) {
if ([[segment titleForSegmentAtIndex:i] isEqualToString:@"SomeTitle"]) {
index=i;
}
}
segment.selectedSegmentIndex=index;
【解决方案2】:
1) 要在界面生成器中选择默认值,只需取消选中索引的选定属性即可。
【解决方案3】:
您可以显式调用分段控件的valueChanged操作方法。
例如,您有一个 valueChanged 操作方法作为
(IBAction)segmentIndexChanged:(UISegmentedControl *)sender {
if (sender.title isEqualToString:@"SomeTitle") {
//Do something
}
}
那么方法调用就会
self.segmentedControl.selectedSegmentIndex = 2;
[self segmentIndexChanged:self.segmentControl];
【解决方案4】:
不,没有办法做到这一点。最接近它的是#define 您正在使用它们的类中的索引。
类似这样的:
#define SomeTitle_Index 0
#define SomeOtherTitle_Index 1
#define AnotherTitle_Index 2
然后选择它们将是这样的:
[self.segmentedControl setSelectedSegmentIndex:SomeOtherTitle_Index];
并检查索引:
if (self.segmentedControl.selectedSegmentIndex == SomeOtherTitle_Index){
//Do something
}