ios5 - 在 UISegmentedControl 中设置默认段

标签 ios5 xcode4.2 storyboard uisegmentedcontrol

我有一个应用程序,它有两个 View Controller Viewcontroller 和 OptionsViewController。 Viewcontroller 是初始的viewcontroller,然后如果我单击一个按钮,我就会有一个到optionsviewcontroller 的模态segue。
在 optionsviewcontroller 中,我从 Storyboard创建了 UISegmented viewcontroller,它链接到一个 socket (UnitsSegmentedControl),我希望能够告诉分段控件在 OptionsViewController 加载时默认选择哪个段。
在我的 Viewcontroller 中,我写了一个方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    OptionsViewController *ovc=[segue destinationViewController];
    ovc.delegate=self;
    [ovc.UnitsSegmentedControl setSelectedSegmentIndex:1];
}
问题是当 OptionsViewController 加载 View 时,默认情况下所选索引为 0。我没有收到任何错误消息或其他内容。
我正在使用 Xcode 4.2。我认为这可能是我可以在 Storyboard中更改以使 UISegmentedControl 能够设置默认选定索引的一些选项。我不知道还有什么可能导致这种情况。
编辑:
我发现如果我写:
[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1];
在 OptionsViewController 方法中 viewdidload 一切正常。为什么我不能从准备转场方法中做到这一点?

最佳答案

在加载 OptionsViewController 之前,分段控件不存在,这就是为什么您无法在 ViewController 的 prepareForSegue 方法中设置所选段的原因。查看 UISegmentedControl Class Reference 发现无法设置默认状态:

“默认值为 UISegmentedControlNoSegment(未选择段),直到用户触摸段。将此属性设置为 -1 以关闭当前选择。当控件处于瞬时模式时,UISegmentedControl 忽略此属性。当用户触摸段以更改选择,生成控件事件 UIControlEventValueChanged;如果分段控件设置为响应此控件事件,则会向其目标发送操作消息。”

在 OptionsViewController 的 viewDidLoad 方法中设置 selectedSegmentIndex 是设置 View Controller 默认值的正确方法。

关于ios5 - 在 UISegmentedControl 中设置默认段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862082/

相关文章:

iphone - 使启动图像显示更长的xcode

fonts - 无法在 xcode 4.2 上应用某些字体作为自定义字体来开发 iOS 5 应用程序

ios - 一直给我的单例执行不正确

ios - 无法在 XCODE STORYBOARD 中使用 FREEFORM

iphone - 如何在 swift ios 中将图像宽度与屏幕尺寸相匹配

ios - 如何在 iOS 上的 ImageView 下方添加阴影效果?

c++ - 如何从另一个平台(iOS 到 Windows)打开和读取 SQLite 数据库

iphone - 如何在 UIScrollView 中的另一个 View 下方添加 View ?

objective-c - 当为同一事件提供多个 IBAction 时,IBAction 会触发什么命令

iphone - iOS 4 上的 iOS Storyboard?