У NSTableView
есть кратные NSCell
с (косвенно через NSTableColumn
). NSCell следует шаблону дизайна Flyweight; они печенья. В каждом столбце есть одна ячейка, и ее просят нарисовать себя для каждой строки. "Вот значение, нарисуйте его в первой строке; вот значение для второй строки и т. Д." Это отличается от табличных представлений на основе представлений, которые имеют экземпляр представления на ячейку.
Я вложил в NSPopUpButtonCell подкласс и для каждого setXxxValue:
метода я вызываю NSLog();
и пересылаю сообщение суперклассу. Единственный метод, который вызывается (скажем, при добавлении новых строк или обновлении таблицы иным образом), это setObjectValue:
. Это ожидается от документации ... но null
это единственное, что ему передано !! Должен быть передан NSNumber с индексом выбранного элемента.
Моя таблица хорошо рисует. Я просто пытаюсь понять это, потому что я хочу расширить / изменить поведение ячейки (очевидно, поскольку в противном случае мне не понадобился бы подкласс).
Вопрос: Как это возможно? Как NSPopUpButtonCell устанавливается в значение, чтобы нарисовать правильное значение для каждой строки. Даже с учетом привязок, это NSTableColumn делает тяжелую работу, нет? Чего мне не хватает?