Как реализовать боковую панель, похожую на Mail/iTunes/Finder/и т. д. в Cocoa/IB?

StackOverflow https://stackoverflow.com/questions/241507

  •  04-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Пожалуйста, ознакомьтесь с Примечания к выпуску AppKit.Найдите NSTableViewSelectionHighlightStyleSourceList в документе.

Или перетащите представление таблицы и выберите Highlight: Source List в конструкторе интерфейсов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top