Где должны быть реализованы действия, связанные с документом, для приложения Cocoa?

Я пишу приложение Cocoa на основе документов, которое в основном представляет собой программу графического редактирования. Я хочу, чтобы пользователь мог показывать/скрывать немодальные окна (например, окно инспектора). Поскольку эти окна будут отображаться/скрываться из пунктов меню, где «лучшее» место для реализации действий, таких как - (IBAction)toggleInspector:(id)sender?

Я видел, что в примере кода Sketch они реализованы в делегате приложения, и экземпляры оконного контроллера также хранятся там, но мне кажется, что это более удобное место для его размещения, чем самое «изящное» место. Кроме того, поскольку этот инспектор будет актуален только тогда, когда документ открыт, кажется, что он должен быть больше связан с основным NSWindowController документа, чем с приложением.


person Adam Preble    schedule 20.03.2010    source источник


Ответы (1)


Кроме того, поскольку этот инспектор будет актуален только тогда, когда документ открыт, кажется, что он должен быть больше связан с основным NSWindowController документа, чем с приложением.

Нет, потому что Инспектор является общим для всех документов; на каждый документ не приходится по одному инспектору.

Помните, что в одном процессе может быть открыто несколько документов; это не несколько процессов, по одному на документ, как в Windows, а несколько документов в одном процессе. Для каждого процесса существует один Инспектор, общий для всех документов, и он применяется к любому из этих документов, который является самым передним в данный момент.

Я бы дал Инспектору собственный контроллер, созданный в пера MainMenu.

person Peter Hosey    schedule 20.03.2010