Флажок 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;
}

Чем меньше кода, тем лучше код.

Другие вопросы по тегам