如何使 UISwitch 成为 BOOL?

发布于 2024-09-25 18:43:27 字数 1060 浏览 9 评论 0原文

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

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

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

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

还创建了一个访问器

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

编辑:当然我合成了它。

然后在 Interface Builder 中我连接了mySwitch 到我在该视图上创建的 Switch。

现在,我正在使用一个方法,就是在 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 的状态。

Forgive me if this is a simple question, but is a UISwitch a boolean variable? If it is not, how can I make it BOOL?

Please allow me to explain why I'm having trouble.

I declared my variable in my FlipsideViewController.

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

also creating an accessor

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

EDIT: and of course I synthesize it.

Then in Interface Builder I connected mySwitch to a Switch I created on that view.

NOW, I have a method that I'm using which is this in the MainViewController:

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

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

The problem I'm having is that whenever I run the program, the label always displays "OFF". Do you have any clue why? I'm really helpless.

I would really appreciate any help on this, and again I apologize for being such a newbie. :)

EDIT: This is how I'm calling the method...

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

So, I'm passing in the state of the mySwitch UISwitch.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云仙小弟 2024-10-02 18:43:27

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

这是后者: 更新 在澄清视图控制器之间的关系后更改了代码。

- (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];

You either need to connect the UISwitch to an IBAction method that updates isOn, or read the state of the switch in your test.

Here's the latter: UPDATE Changed the code after you clarified the relationships between the view controllers.

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

The call to updateLabels, which I'm hoping exists in FlipSideViewController, should look something like this: (I obviously don't know your variables names.)

[self.delegate updateLabels:self.myTextField.text isOn:self.mySwitch.on];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文