NSOutlineView
является подклассом NSTableView
. В настоящее время NSTableView
поддерживает две реализации.
- На основе ячеек.
- На основе просмотра.
Чтобы сделать боковую панель в стиле OSX 10.8 Finder (с автоматическим оформлением серого значка), необходимо использовать табличное представление на основе представления со стилем выделения исходного списка.
С NIB это типичная работа. Ничего сложного. (см. SidebarDemo) Но я хочу избежать использования NIB или Interface Builder. Хочу сделать боковую панель чисто программно.
В этом случае у меня большая проблема. AFAIK, нет возможности предоставить представление прототипа для конкретной ячейки. Когда я открываю .xib
файл, я вижу, что <tableColumn>
содержит <prototypeCellViews>
. И это указывает, какое представление будет использоваться для столбца. Я не могу найти, как установить это программно с помощью общедоступного API.
В качестве обходного пути я попытался создать ячейку вручную, используя -[NSTableView makeViewWithIdentifier:owner:]
и -[NSTableView viewAtColumn:row:makeIfNecessary:]
, но ни один из них не возвращает экземпляр представления. Я создал NSTableCellView
, но у него нет экземпляров просмотра изображений и текстовых полей. И я также попытался установить их, но поля помечены как assign
, поэтому экземпляры немедленно освобождаются. Я пытался сохранить это, заставляя их удерживать, но это не сработало. NSTableView
не управляет ими, поэтому я уверен, что этому табличному представлению не нравится моя реализация.
Я считаю, что есть свойство установить это представление прототипа для столбца. Но я не могу их найти. Где я могу найти свойство и программно сделать NSOutlineView
системный параметр по умолчанию со стилем списка источников?