我创建了多个复选框动态,现在我想检查它们的状态,但我不知道该怎么做。这是我创建多个NSCheckbox的代码:
for(int i=1; i<=number;i++)
{
DeleteCheckbox = [[NSButton alloc] initWithFrame:NSMakeRect (20,textfield_Y,50,25)];
[DeleteCheckbox setButtonType:NSSwitchButton];
[DeleteCheckbox setBezelStyle:0];
[DeleteCheckbox setTitle:@""];
[DeleteCheckbox setTag:200+i];
[DeleteCheckbox setState:NSOffState];
[DeleteCheckbox setAction:@selector(checkState:)];
[guiView addSubview:DeleteCheckbox];
[DeleteCheckbox release];
}
以下是检查状态的代码:
-(IBAction)checkState:(id)sender
{
if ([DeleteCheckbox state] == NSOnState) {
NSLog(@"selected");
}
else {
NSLog(@"not selected");
}
}
但是在运行时,它始终是printf:“未选中”。
答案 0 :(得分:10)
您必须检查发送按钮的状态,而不是实例变量DeleteCheckbox
(已发布且未指向有效按钮)的状态:
-(IBAction)checkState:(NSButton *)sender
{
if ([sender state] == NSOnState) {
NSLog(@"selected");
}
else {
NSLog(@"not selected");
}
}
答案 1 :(得分:0)
您在此处设置“关闭”状态:
[DeleteCheckbox setState:NSOffState];
尝试设置“开启”状态。
[DeleteCheckbox setState:NSOnState];
答案 2 :(得分:0)
您应该检查sender
的状态,而不是DeleteCheckBox
的状态,因为您似乎正在为要实例化的所有复选框重用该变量。
if ([(NSButton*)sender state] == NSOnState)
等...