У меня есть два переключателя в моем NSMatrix с режимом NSRadioModeMatrix. По умолчанию нажимается 1-я радиокнопка. Моя проблема заключается в том, что когда я нажимаю на свою вторую радиокнопку «Позвольте мне выбрать» и нажимаю «Отмена», кажется, что обе радиокнопки выбраны. Я попытался отменить выбор второй радиокнопки, когда нажата кнопка «Отмена» в диалоговом окне выбора папки. Он отлично работает, когда выбран путь и выбрано Открыть. С NSRadioModeMatrix должен быть выбран один переключатель за раз. Но почему выбираются две кнопки одновременно. Что я здесь делаю неправильно
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
}
}