Как реализовать боковую панель, аналогичную Mail / iTunes / Finder / etc в Cocoa / IB? - PullRequest
22 голосов
/ 28 октября 2008

Я думаю, что название в значительной степени говорит обо всем ... Я ищу реализацию интерфейса, похожего на стандартную боковую панель OS X, используемую во всех вышеупомянутых программах, и мне интересно, есть ли у кого-нибудь какие-либо мысли относительно самый простой способ сделать это, а именно о том, какой вид использовать для левой панели выбора. На самом деле я не думаю, что мне даже нужен иерархический компонент, как это видно в приложениях Apple, мне просто нужен красивый плоский список вариантов, которые определяют то, что показано на правой панели.

Очевидным началом является вертикальное разделение, но я не совсем уверен, куда идти. Представление коллекции только с одним столбцом или чем-то в этом роде?

Ответы [ 2 ]

28 голосов
/ 28 октября 2008

Я сделал несколько приложений, которые используют аналогичную настройку.

Обычно я использую NSSplitView, с одним столбцом NSTableView на левой панели. Не забудьте отключить заголовки и сделать так, чтобы они отображались в стиле «Source View».

Если вам нужны раскрывающие треугольники, тогда вы захотите использовать NSOutlineView вместо NSTableView, но, по крайней мере, для первого шага я бы придерживался простого NSTableView.

Шаблон, который я также использую, должен сделать NSTableView немного короче, чем NSSplitView, и иметь кнопки внизу (добавить, удалить и т. Д.). Обычно я строил программу на основе Core Data, поэтому их легко подключить к методам создания / удаления объектов, а затем привязать NSTableView к массиву объектов.

19 голосов
/ 28 октября 2008

Прямая поддержка для такого рода вещей была добавлена ​​в Leopard. Это называется «список источников».

См. Примечания к выпуску AppKit . Найдите NSTableViewSelectionHighlightStyleSourceList в документе.

Или перетащите табличное представление и выберите Highlight: Source List в Interface Builder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...