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,

Другие вопросы по тегам