如何检查是否选中了复选框

时间:2015-09-30 16:03:55

标签: ios objective-c checkbox

我有2个复选框,在我的控制器中,我希望能够知道是否选中了这些复选框。 我的代码:

在.h:

@property (weak, nonatomic) IBOutlet Checkbox *option1Button;
@property (weak, nonatomic) IBOutlet Checkbox *option2Button;

在controller.m中:

- (IBAction)optionButton1Pressed:(id)sender {
   NSLog(@"first : %lu second : %lu", (unsigned long)[_option1Button state], (unsigned long)[_option2Button state]);
}

- (IBAction)optionButton2Pressed:(id)sender {
   NSLog(@"first : %lu second : %lu", (unsigned long)[_option1Button state], (unsigned long)[_option2Button state]);
}

映射的动作是“内部修饰”。 我在日志中可以看到的是,如果我选中或取消选中复选框,则状态始终为1。每次点击,都是1

我尝试过“编辑已更改”,但从未调用

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我假设复选框来自UIButton ......在这种情况下,它将是state ......

所以option1Button.state & UIControlStateSelected可能会做你想要的......

供参考:

enum {
   UIControlStateNormal               = 0,
   UIControlStateHighlighted          = 1 << 0,
   UIControlStateDisabled             = 1 << 1,
   UIControlStateSelected             = 1 << 2,
   UIControlStateApplication          = 0x00FF0000,
   UIControlStateReserved             = 0xFF000000 
};

答案 1 :(得分:0)

这取决于你想知道国家的原因。

(我假设您已配置按钮的状态,以显示复选框图像,如果它处于选定状态,否则显示空框。)

如果以下是

的原因
if (!button.isSelected) {
   button.selected = YES;
}

然后询问按钮的'isSelected属性是查看按钮是否显示复选标记的好方法。

但是,例如,如果您想知道状态

的原因如下
if (button.isSelected) {
    //Send network request
}

然后询问您的按钮是不正确的方法,以确定是否选中了复选标记。这样做的原因是因为您应该严格遵守设计范例“模型 - 视图 - 控制器”或MVC编写应用程序。

https://en.wikipedia.org/wiki/Model - 视图 - 控制器

因此,如果您的按钮因以下原因而被选中(例如)

if (x > 5) {
    button.checked = YES;
}

然后询问您的模型x是否大于5是确定是否选中了复选标记按钮的最佳方法。

答案 2 :(得分:0)

- (IBAction)optionButton1Pressed:(id)sender
{
   UIButton *btn = (UIButton *)sender;

   if(btn.isSelected)
       btn.isSelected = NO;

   else
       btn.isSelected = YES;
}