У меня в приложении есть NSOutlineView (новый в Lion) в виде Sidebar SourceList, использующий CoreData + NSTreeController + Bindings + NSOutlineView и Object в виде NSOutlineViewDelegate.
Я использую эти методы делегатов в конспекте делегата:
- (BOOL)outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item В моем случае элемент является групповым, когда родительское отношение (CoreData) равно нулю.
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item Для возврата представления ячейки заголовка (группы) или ячейки данных (иконка + текст).
И я установил стиль отображения размера (в Конструкторе интерфейсов в XCode) как "Sidebar System Default", так что вид ячеек меняет свой размер, когда пользователь меняет его в системных настройках.
Это работает нормально... но есть несколько проблем:
Первое окно ячейки - это групповая ячейка (ячейка заголовка), и при разворачивании-складывании текстовое поле для этого окна ячейки перемещается вверх-вниз. Это происходит только с первой.
Текстовое поле в ячейках заголовка меняет свой размер (когда меняется размер в системных настройках), но я бы хотел, чтобы размер ячеек заголовка оставался фиксированным, как (Lion) Finder, Mail... делает это.
Строковое значение текстового поля в ячейках заголовка не отображается заглавными буквами.
Изображения, которые я использую в качестве иконки в представлении ячеек данных, выглядят прозрачными (со значением 0,5 альфа или что-то в этом роде).
Помощь? Заранее спасибо
SOLVED:
Для движения при разворачивании/сворачивании первого просмотра ячеек используйте метод setFloatsGroupRows:NO с контурным обзором (Спасибо Антон!)
Если вы хотите, чтобы фиксированный размер для шрифта групповых ячеек (даже если пользователь изменил его в системных настройках), развяжите в IB ячейку заголовка с ее табличным видом ячейки.
Используя значениеTransformer (преобразующее строку в верхний регистр) с ячейкой заголовка, строка появится в верхнем регистре. Также это можно сделать с помощью метода источника данных nsoutlineview - outlineView:objectValueForTableColumn:byItem:....
И, наконец, иконка полупрозрачная, так как не включена. Снимите флажок "Conditional Sets Enabled" в Value или Value Path (в зависимости от того, что вы используете) в привязке ячеек изображения