Большинство ответов включают преобразование компонента табличного представления в табличное представление на основе ячеек.Если это то, что вы хотите, то это хорошо, вы можете идти.В то время, когда задавался вопрос, таблицы на основе ячеек были нормой, и когда Apple изменила оконный компонент на компонент на основе представления, это явно вызвало много путаницы.Сегодня документы Apple рекомендуют вам использовать таблицы на основе представлений, а не таблицы.
Проблема, описанная в вопросе, возникает, если вы используете - tableView:objectValueForTableColumn:row:
в своем источнике данных.Вы не можете использовать этот метод с таблицами на основе представления, он только для таблиц на основе ячеек.Вместо этого вам нужно использовать NSTableViewDelegate
метод - tableView:viewForTableColumn:row:
.Вам не нужно заставлять объект соответствовать протоколу NSTableViewDelegate
, чтобы использовать этот метод, но он должен быть установлен как делегат таблицы.
В ответ на Cœur, цитируя из AppleОн-лайн документы.
Таблицы на основе NSCell по-прежнему поддерживаются В OS X v10.6 и более ранних версиях каждая ячейка табличного представления должна была быть подклассом NSCell.Этот подход вызвал ограничения при разработке сложных пользовательских ячеек, часто требуя от вас написать свои собственные подклассы NSCell.Предоставление анимации, такой как просмотр прогресса, также было чрезвычайно трудным.В этом документе эти типы табличных представлений упоминаются как основанные на NSCell табличные представления.Таблицы на основе NSCell по-прежнему поддерживаются в OS X v10.7 и новее, но обычно они используются только для поддержки устаревшего кода.В общем, вы должны использовать таблицы на основе NSView.