1

NSRadioModeMatrix モードの NSMatrix に 2 つのラジオ ボタンがあります。デフォルトでは、最初のラジオ ボタンがクリックされます。私の問題は、2 番目のラジオ ボタン [Let me Choose] をクリックして [Cancel] をクリックすると、両方のラジオ ボタンが選択されているように見えることです。[フォルダの選択] ダイアログで [キャンセル] をクリックしたときに、2 番目のラジオ ボタンの選択を解除しようとしました。パスが選択され、開くが選択されている場合は正常に機能します。NSRadioModeMatrix では、一度に 1 つのラジオ ボタンを選択する必要があります。しかし、なぜ一度に 2 つのボタンが選択されるのでしょうか。ここで何が間違っているのですか

 NSButtonCell *prototype = [[NSButtonCell alloc] init];
[prototype setTitle:@"Choose home Folder"];
[prototype setButtonType:NSRadioButton];

NSRect matrixRect  = NSMakeRect(15,150,450,125);

myMatrix = [[NSMatrix alloc] initWithFrame:matrixRect mode:NSRadioModeMatrix
                                           prototype:(NSCell *)prototype
                                        numberOfRows:2
                                     numberOfColumns:1];
NSSize cellSize;
cellSize.height =40;
cellSize.width=400;

[myMatrix setCellSize:cellSize];
[myMatrix setTarget:self];
[myMatrix setAction:@selector(HandleRadioClick)];

NSArray *cellArray = [myMatrix cells];
[[cellArray objectAtIndex:0] setTitle:@"Leave it as Default"];
[[cellArray objectAtIndex:0] setTag:0];
[[cellArray objectAtIndex:1] setTitle:@"Let me Choose"];
[[cellArray objectAtIndex:1] setTag:1];

-(void) HandleRadioClick
{
NSOpenPanel* dirDialog = [NSOpenPanel openPanel];
// Enable the selection of files in the dialog.
[dirDialog setCanChooseFiles:NO];

// Multiple files not allowed
[dirDialog setAllowsMultipleSelection:NO];

// Can't select a directory
[dirDialog setCanChooseDirectories:YES];


NSString *selectedFolder;
if ([dirDialog runModal] == NSOKButton)
{
    selectedFolder =[dirDialog filename];
    if([selectedFolder length] > 50)
    {
        [label setFrame:NSMakeRect(45, 120, 400, 80)];
    }
    [label setStringValue:selectedFolder];
}
else{
    [[[myMatrix cells] objectAtIndex:1] setTitle:@"Why its not deselecting" ];
    [[[myMatrix cells] objectAtIndex:1] setSelected:NO];    // Not Working
    [[[myMatrix cells] objectAtIndex:1] deselectRow:1];     // Not Working
}

}

4

1 に答える 1

1
 [[[myMatrix cells] objectAtIndex:1] setSelected:NO]

 [[[myMatrix cells] objectAtIndex:1] deselectRow:1]

NSButtonCell のプロパティではないため、両方とも機能しません。

その方法の代わりにこれを試してください

[myMatrix selectCellAtRow:0 column:0];
于 2012-09-10T08:18:12.480 に答える