NSTextFieldCell
реализован с помощью шаблона flyweight (я читал об этом в книге «Шаблоны проектирования Какао»), и в каждом столбце есть только один экземпляр ячейки.Вы можете увидеть какое-то доказательство этого, когда редактируете его в конструкторе интерфейсов.Когда вы щелкаете, чтобы редактировать NSTableView
, этот единственный экземпляр ячейки возвращается туда, где он был раньше, и обрабатывает редактирование для вас.
Как вы говорите, выполнение этого работает для визуального внешнего вида (рисования) ячейки, а также для NSTextField
, поскольку каждая NSTextField
должна иметь только одну ячейку на представление, и, следовательно, это происходит, когдаВы хотите отредактировать его.
Однако в этом случае вы создаете ячейку, рисуете ее, а затем выбиваете ее из памяти, освобождая ее в конце кода.Итак, как вы ожидаете эту ячейку, которую вы установили как редактируемую, когда будете пытаться ее редактировать?Он больше не существует.
Попробуйте создать отдельную ячейку, когда настроено табличное представление, и настройте собственную ячейку для правого столбца таблицы, используя это:
- (void)setDataCell:(NSCell *)aCell
В качестве альтернативы вы можетеподкласс NSTextFieldCell
и настройте его там, и установите класс ячейки для столбца в построителе интерфейса (или XCode 4, если вы находитесь на переднем крае!)