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