Как использовать событие «edit» для NSTableView - PullRequest
0 голосов
/ 16 февраля 2011

Внутри NStableViewDelegate я использую окно листа, чтобы начать операцию редактирования следующим образом:

- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {

    editEntity = [[contractsAC selectedObjects] objectAtIndex:0];
    needsWriteToArrayController = FALSE;

    [self beginSheet];

    return NO;

}

- (void) beginSheet {

  [NSApp beginSheet:contractEditWindow 
       modalForWindow:mainWindow 
        modalDelegate:nil 
       didEndSelector:NULL 
          contextInfo:nil
     ];

}

Если дважды щелкнуть ячейку таблицы, все будет работать так, как ожидалось: появится лист, и я могу редактировать его входные данные.

Если выбрана ячейка таблицы, и я нажимаю клавишу возврата, то, как правило, происходит связывание: появляется лист, но событие клавиши возврата перенаправляется на лист. В свою очередь, кнопка SAVE листа по умолчанию срабатывает - и заставляет лист исчезнуть. Жаль, нет возможности редактировать; -)

Должен ли я использовать текущее ключевое событие внутри метода mustEditTableColumn:? Если да, то как я мог?

1 Ответ

0 голосов
/ 16 февраля 2011

Вы можете попробовать отложить представление листа с помощью -performSelector:withObject:afterDelay:.Добавьте закрытый метод, который настраивает и представляет лист, и задайте для него задержку 0.0.Это будет запланировано чуть позже в цикле выполнения, что даст возможность нажатия клавиши распространяться.

...