我有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
我尝试过“编辑已更改”,但从未调用
有什么想法吗?
答案 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;
}