Флажок NSButtonCell внутри NSTableView всегда получает NSOffState. Зачем?
Привет, ребята, я новичок в программировании Какао, и я всегда получаю NSOffState независимо от того, проверяю я или снимаю флажок NSButtonCell (ячейка флажка в пользовательском интерфейсе перетаскивается в ячейку в NSTableView). У меня есть @property IBOutlet NSButtonCell *mySelection, подключенный к соответствующему пользовательскому интерфейсу и следующему коду.
- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
MediaAComparar *media = [mediasRecesEnStock objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"seleccion"])
{
if ([mySelection state] == NSOnState)
{
[media setValue:object forKey:@"seleccion"];
NSLog(@"on state");
}
if ([mySelection state] == NSOffState)
{
[media setValue:object forKey:@"seleccion"];
NSLog(@"off state");
}
}
}
Я никогда не получаю NSOnState для выполнения, единственное сообщение NSLog, которое я получаю, это: состояние выключено. Кто-нибудь может мне помочь? Спасибо!!
1 ответ
Если у вас есть один выход ("mySelection") и несколько рядов, к какому ряду, по вашему мнению, подключен выход? (Ответ: ни один из них. Вы, вероятно, подключили его к ячейке прототипа, которая никогда не отображается и не используется напрямую.)
Но не важно, вам не нужно проверять состояние, прежде чем устанавливать его. Предполагая, что ваш другой код правильный, вы должны быть в состоянии сделать что-то вроде:
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
MediaAComparar *medium = [mediasRecesEnStock objectAtIndex:row];
if ([tableColumn.identifier isEqualToString:@"seleccion"])
medium.seleccion = object.booleanValue;
}
Чем меньше кода, тем лучше код.