Ios5 在UISegmentedControl中设置默认段

Ios5 在UISegmentedControl中设置默认段,ios5,xcode4.2,storyboard,uisegmentedcontrol,Ios5,Xcode4.2,Storyboard,Uisegmentedcontrol,我有一个应用程序,它有两个Viewcontroller Viewcontroller和options Viewcontroller。Viewcontroller是初始的Viewcontroller,如果我单击一个按钮,我将有一个模式序列到选项Viewcontroller。在选项viewcontroller中,我使用了从链接到插座(UnitsSegmentedControl)的故事板创建的分段viewcontroller,我希望能够告诉分段控件在加载选项viewcontroller时默认应选择哪个

我有一个应用程序,它有两个Viewcontroller Viewcontroller和options Viewcontroller。Viewcontroller是初始的Viewcontroller,如果我单击一个按钮,我将有一个模式序列到选项Viewcontroller。在选项viewcontroller中,我使用了从链接到插座(UnitsSegmentedControl)的故事板创建的分段viewcontroller,我希望能够告诉分段控件在加载选项viewcontroller时默认应选择哪个分段。 在我的Viewcontroller中,我编写了一个方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
OptionsViewController *ovc=[segue destinationViewController];
ovc.delegate=self;
[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1];
问题是,当OptionViewController加载视图时,所选索引默认为0。我没有收到任何错误消息或什么。 我使用的是Xcode 4.2。我想这可能是我可以在故事板中更改的一些选项,以使UISegmentedControl能够设置默认的选定索引。我不知道是什么原因造成的。多谢各位

编辑: 我发现如果我写:

 [ovc.UnitsSegmentedControl setSelectedSegmentIndex:1];

内部选项ViewController方法viewdidload一切正常。为什么我无法从“准备分段”方法执行此操作?

分段控件在加载选项ViewController之前不存在,这就是为什么无法在ViewController的“准备分段”方法中设置选定分段的原因。查看UISegmentedControl类引用发现无法设置默认状态:

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


在选项ViewController的viewDidLoad方法中设置selectedSegmentIndex是设置视图控制器默认值的正确方法。

如果希望以编程方式执行此操作,请使用此代码

segmentControl.selectedSegmentIndex=-1;

如果您想从nib设置它,那么在interface builder中,只需取消选中index的selected属性即可

我找到了一种解决此问题的方法,在OptionViewController中创建一个名为index的属性,并将其设置为我希望直接从prepareforsegue方法中选择的段号,然后将其分配给中的segmentviewcontrol视图没有加载。谢谢你的帮助