4

複数のチェックボックスを動的に作成しましたが、それらの状態を確認したいのですが、その方法がわかりません。これは、複数の 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: "not selected" になります。

4

3 に答える 3

11

インスタンス変数ではなく、送信ボタンの状態を確認する必要がありますDeleteCheckbox(これは解放されており、有効なボタンを指していません)。

-(IBAction)checkState:(NSButton *)sender
{
    if ([sender state] == NSOnState) {
        NSLog(@"selected");
    }
    else {
        NSLog(@"not selected");
    }
}
于 2013-08-08T07:24:35.247 に答える
0

インスタンス化するすべてのチェックボックスでその変数を再利用しているように見えるため、senderではなく の状態を確認する必要があります。DeleteCheckBox

  if ([(NSButton*)sender state] == NSOnState)

等...

于 2013-08-08T07:25:59.647 に答える
0

ここで「オフ」状態を設定します。

[DeleteCheckbox setState:NSOffState];

代わりに「オン」状態を設定してみてください。

[DeleteCheckbox setState:NSOnState];
于 2013-08-08T07:21:15.533 に答える