NSOutlineView с подсветкой списка источников без отступа второго уровня
Я столкнулся с очень странной проблемой:
у меня есть NSOutlineView
установлен в NSTableViewSelectionHighlightStyleSourceList
, При определенных условиях второй уровень не имеет отступов и отображается на том же уровне, что и корневой узел.
Я считаю, что это так, потому что первый уровень, как ожидается, будет "групповым" уровнем. Тем не менее, на 10.8 все отступы по умолчанию правильно. Я поймал это только во время тестирования на 10.7. Похоже, это поведение изменилось в разных выпусках.
Второй уровень не имеет отступ, если:
- на Mac OS X 10.7 Lion (всегда одинаковое поведение)
- ИЛИ на 10.8 только если я реализую
- (BOOL)outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item
вернуть НЕТ
Как я могу получить отступы для каждого уровня, как и следовало ожидать для иерархического макета, и сохранить стиль списка источников?
Неожиданный отступ:
1 ответ
Кажется, что отступ начинается только на 3-м уровне. Итак, чтобы обойти это, вам нужно добавить узел, который оборачивает все ваши текущие корневые узлы. Этот корневой узел будет стилизован так же, как и узел группы OSX по умолчанию:
Не идеально, в зависимости от вашего пользовательского интерфейса, но лучше, чем использование обычного стиля NSOutlineView.
Если вы не хотите показывать корневой заголовок, вы можете использовать outlineView:heightOfRowByItem:
установить высоту 0
,