如何让UISwitch成为BOOL?

时间:2010-09-30 20:09:22

标签: objective-c interface-builder ios4 uiswitch

请原谅我这是一个简单的问题,但是UISwitch是一个布尔变量吗?如果不是,我怎么能把它改成BOOL?

请允许我解释为什么我遇到麻烦。

我在我的FlipsideViewController中声明了我的变量

UISwitch* mySwitch;     //switch used to turn label2 on/off

还创建一个访问者

@property (nonatomic, retain) IBOutlet UISwitch *mySwitch;

编辑:当然我合成了它。

接口生成器中的

然后我将mySwitch连接到我在该视图上创建的Switch。

NOW ,我有一个方法,我正在使用的是MainViewController中的

- (void)updateLabels:(NSString *)text :(BOOL)isOn {

    [nameLabel setText:text]; 
    if (isOn==YES)
    [onLabel setText:(@"ON")];
      else
       [onLabel setText:(@"OFF")]; }

我遇到的问题是每当我运行程序时,标签始终显示“OFF” 。你有什么线索的原因吗?我真的很无奈。

我真的很感激任何帮助,我再次为这样的新手道歉。 :)

编辑:这就是我调用方法的方式......

 [self.delegate updateLabels: myTextField.text : mySwitch.state];

所以,我正在传递mySwitch UISwitch的状态。

1 个答案:

答案 0 :(得分:1)

您需要将UISwitch连接到更新isOn的IBAction方法,或者读取测试中的开关状态。

以下是后者: UPDATE 在您澄清视图控制器之间的关系后更改了代码。

- (void)updateLabels:(NSString *)text isOn:(BOOL)isOn {
    [nameLabel setText:text]; 
    if (isOn == YES) {
       [onLabel setText:(@"ON")];
    } else {
       [onLabel setText:(@"OFF")]; 
    }
}

我希望在FlipSideViewController中存在对updateLabels的调用,看起来应该是这样的:(我显然不知道你的变量名。)

[self.delegate updateLabels:self.myTextField.text isOn:self.mySwitch.on];