2012-01-11 48 views
1

我有一个奇怪的问题与UISegmentedControl。 我使用的方法设置所选段索引:UISegmentedControl setSelectedSegmentIndex问题

[self.toolbarSegmentedControl setSelectedSegmentIndex:0]; 

所以,问题是 - 单击处理:

- (IBAction)segmentedControlClick:(id)sender 

不是在模拟器调用,但在设备经过时它被称为这种方法。为什么这样,哪里是错误的,正确的行为?

回答

1

也许您的设备上的iOS版本与您的模拟器不同。 setSelectedSegmentIndex的行为在iOS5中发生了变化 - 具体来说,segmentChangeAction不再被称为结果。详细信息请参见this other Stack Overflow question

+0

感谢您的回答和链接 – Stas 2012-01-11 11:58:50

6

您的处理程序正在拦截事件UIControlEventValueChanged

以编程方式更改UIControl的值时,不应指望调用此事件,因为只有用户交互应发送UIControl的操作。

相反,如果你愿意,你可以自己调用它:

[self.toolbarSegmentedControl setSelectedSegmentIndex:0]; 
[self.toolbarSegmentedControl sendActionsForControlEvents:UIControlEventValueChanged]; 

这将做到这一点。

+0

关键是我不指望事件被调用!此外,不得调用该事件(例如,设置UISlider的值不会发出Value Changed事件。设置UISwitch的on不会发出Value Changed事件等),此外它是一个报告的苹果bug ID#8372405 ! – Stas 2012-01-11 11:58:19

+0

哦,对不起......我以为那是另一种方式...... – 2012-01-17 11:08:53

+0

即使如此 - 它为我所需要的 - 这就是你的想法,亚伯拉罕。谢谢。 – malaki1974 2012-05-30 22:33:27