如果交换机自行更改,我如何以编程方式为UISwitch调用IBAction?

时间:2014-02-13 21:32:18

标签: objective-c methods ibaction uiswitch

有没有办法以外部设备读取电压电平并将数据发送到iPod Touch,以编程方式调用自动更改为开/关的开关? (5伏=开关打开,小于5 =开关关闭)

2 个答案:

答案 0 :(得分:2)

考虑到您的评论,这应该是您想要的:

[yourSwitch addTarget:self action:@selector(switchStateChanged:) forControlEvents:UIControlEventValueChanged];

然后,实际的方法:

-(void)switchStateChanged:(UISwitch*)thisSwitch{
    // code
}

答案 1 :(得分:0)

  

有没有办法以编程方式调用更改为的开关   基于外部设备读取电压电平自行打开/关闭   并将数据发送到iPod Touch? (5伏=开关打开,小于   5 =开关关闭)

是的,您当然可以将开关的on属性设置为YES或NO。例如,如果您的视图控制器有一个名为theSwitch的插座,则可以设置开关:

self.theSwitch.on = YES;

那就是说,你真的不应该那样使用标准交换机。开关是用户控件,而不是显示器。如果用户看到一个开关,他们希望能够改变它,并且在大多数情况下,他们不会期望开关自己改变状态。创建一些看起来不同的指标会更好,这样你就不会混淆用户。

此外,我认为App Store提交指南中有一段关于不以意外方式使用Apple UI元素的内容。如果您计划在应用商店中发布应用,则可能会在此基础上拒绝该应用。

一个简单的解决方案是使用UISwitch,但将onImageoffImage属性设置为您自己的图像,以便切换看起来不像用户期望控制的内容。 / p>

更新:根据您的评论,您只想知道交换机何时发生变化。这里的答案(IMO)是您的更新方法不应该直接更改开关,而应该在数据模型中设置一些值。然后,管理包含交换机的视图的视图控制器可以使用键值观察来观察模型,并相应地调整开关的值,以及调用开关的动作。