Странное поведение с использованием NSOutline на основе представления (Sourcelist)

У меня в приложении есть 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", так что вид ячеек меняет свой размер, когда пользователь меняет его в системных настройках.

Это работает нормально... но есть несколько проблем:

enter image description here

  • Первое окно ячейки - это групповая ячейка (ячейка заголовка), и при разворачивании-складывании текстовое поле для этого окна ячейки перемещается вверх-вниз. Это происходит только с первой.

  • Текстовое поле в ячейках заголовка меняет свой размер (когда меняется размер в системных настройках), но я бы хотел, чтобы размер ячеек заголовка оставался фиксированным, как (Lion) Finder, Mail... делает это.

  • Строковое значение текстового поля в ячейках заголовка не отображается заглавными буквами.

  • Изображения, которые я использую в качестве иконки в представлении ячеек данных, выглядят прозрачными (со значением 0,5 альфа или что-то в этом роде).

Помощь? Заранее спасибо

SOLVED:

  • Для движения при разворачивании/сворачивании первого просмотра ячеек используйте метод setFloatsGroupRows:NO с контурным обзором (Спасибо Антон!)

  • Если вы хотите, чтобы фиксированный размер для шрифта групповых ячеек (даже если пользователь изменил его в системных настройках), развяжите в IB ячейку заголовка с ее табличным видом ячейки.

  • Используя значениеTransformer (преобразующее строку в верхний регистр) с ячейкой заголовка, строка появится в верхнем регистре. Также это можно сделать с помощью метода источника данных nsoutlineview - outlineView:objectValueForTableColumn:byItem:....

  • И, наконец, иконка полупрозрачная, так как не включена. Снимите флажок "Conditional Sets Enabled" в Value или Value Path (в зависимости от того, что вы используете) в привязке ячеек изображения

18
задан Azpiri 18 August 2011 в 07:20
поделиться