【问题标题】:UISegmentedControl setSelectedSegmentIndex issueUISegmentedControl setSelectedSegmentIndex 问题
【发布时间】:2012-01-11 10:49:43
【问题描述】:

我对 UISegmentedControl 有一个奇怪的问题。 我正在使用方法设置选定的段索引:

[self.toolbarSegmentedControl setSelectedSegmentIndex:0];

所以问题是 - 点击处理程序:

- (IBAction)segmentedControlClick:(id)sender 

在模拟器中不调用,但在设备下通过此方法时调用。为什么会这样,错误和正确的行为在哪里?

【问题讨论】:

    标签: objective-c ios uikit ios-simulator


    【解决方案1】:

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

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

    如果您愿意,您可以自己调用它:

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

    这样就可以了。

    【讨论】:

    • 关键是我不指望事件被调用!此外,不得调用该事件(例如,设置 UISlider 的值不会发出 Value Changed 事件。设置 UISwitch 的 on 不会发出 Value Changed 事件等),此外它是一个报告的苹果错误 ID#8372405 !
    • 即便如此——它满足了我的需要——这就是你的想法,Avraham。谢谢。
    【解决方案2】:

    也许您设备上的 iOS 版本与您的模拟器不同。 setSelectedSegmentIndex 的行为在 iOS5 中发生了变化——具体来说,segmentChangeAction 不再因此而被调用。详情请见this other Stack Overflow question

    【讨论】:

    • 感谢您的回答和链接
    猜你喜欢
    • 2011-06-02
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多