У меня есть (новый в Lion) NSOutlineView на основе представления в качестве SourceList боковой панели в моем приложении с использованием CoreData + NSTreeController + Bindings + NSOutlineView и объекта как NSOutlineViewDelegate.
Я использую эти методы делегата в делегате outlineview:
- (BOOL) OutlineView: (NSOutlineView *) OutlineView isGroupItem: (id) item В моем случае элемент является группой, когда отношение родителей (Core Data) равно нулю.
- (NSView *) outlineView: (NSOutlineView *) OutlineView viewForTableColumn: (NSTableColumn *) tableColumn item: (id) item Чтобы вернуть представление ячейки заголовка (группа) или представление всей панели данных (значок + текст).
И я установил размерный стиль представления структуры (в Интерфейсном Разработчике в XCode) как "Системная боковая панель по умолчанию", чтобы вид ячейки менял свой размер, когда пользователь изменяет его в системных настройках.
Работает нормально ... но есть несколько проблем:
Первое представление ячейки - это групповая ячейка (ячейка заголовка), и при раскрытии-свертывании текстовое поле для этого представления ячейки перемещается вверх-вниз. Только бывает с первым.
Текстовое поле в ячейках заголовка меняет свой размер (при изменении размера в системных настройках), но я хотел бы, чтобы размер ячеек заголовка оставался фиксированным, как (Lion) Finder, Mail ...
Строковое значение текстового поля в ячейках заголовка не отображается в верхнем регистре.
Изображения, которые я использую в качестве значков в представлении изображений ячеек данных, кажутся прозрачными (со значением альфа 0,5 или чем-то в этом роде).
Любая помощь? заранее спасибо
РЕШЕНО:
Для движения при раскрытии / свертывании первого вида ячейки используйте метод setFloatsGroupRows: NO с контурным обзором (спасибо, Антон!)
Если вам нужен фиксированный размер шрифта групповых ячеек (даже если пользователь изменяет его в системных настройках), отключите в IB ячейку заголовка с ее представлением ячеек таблицы.
Используя valueTransformer (который преобразует строку в верхний регистр) с ячейкой заголовка, строка будет отображаться в верхнем регистре. Также вы можете сделать это с помощью метода источника данных nsoutlineview - outlineView: objectValueForTableColumn: byItem: ...
И, наконец, значок полупрозрачный, потому что он не включен. Снимите флажок «Условные наборы включены» в значении или пути к значению (в зависимости от того, что вы используете) в привязках ячеек изображения.