Как отменить выбор NSButtonCell в NSMatrix

У меня есть два переключателя в моем 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
}

}


person Zeus    schedule 10.09.2012    source источник


Ответы (1)


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

и

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

оба не будут работать, поскольку они не являются собственностью NSButtonCell.

Вместо этого метода попробуйте этот

[myMatrix selectCellAtRow:0 column:0];
person vignesh kumar    schedule 10.09.2012
comment
Только что попробовал тот вигнеш, Но то, что вы дали, тоже не работает. Ячейка в (0,0) не выбрана с помощью указанной выше строки. - person Zeus; 10.09.2012
comment
Вы имеете в виду изменить его из другой функции, в то время как эта функция будет вызываться из метода действия матрицы. Позвольте мне попытаться обновить вас - person Zeus; 11.09.2012
comment
@Zeus Я пытался изменить выбор даже в методе делегата уведомления -(void)windowDidBecomeKey:(NSNotification *), но выбор нельзя изменить. - person vignesh kumar; 11.09.2012