Проектирование представлений / windows в Mac OSX впервые

#cocoa #macos #nsview #nswindow

#cocoa #macos #nsview #nswindow

Вопрос:

Я собираюсь взяться за свой первый проект Mac OSX после разработки для iOS. В моих приложениях для iOS мне понятна вся парадигма NavigationViewController-> MyViewController-> MyViews.

Немного больше информации о приложении для iOS, чтобы вам было легче меня понять: приложение представляет собой своего рода средство просмотра графики. Как только вы войдете в систему, у вас появится список рисунков, и если вы выберете один из них, он откроет его. Теперь в приложении iOS у меня есть пользовательский UIViewController, который имеет некоторый пользовательский интерфейс меню и UIScrollView, который содержит UIView, в котором я рисую чертеж. Пользовательский UIViewController отвечает за выполнение функций «приложения», где UIView внутри является просто графическим контекстом.

Теперь — вернемся к Mac: я думал, что в моем главном окне будут отображаться чертежи, и как только один из них будет выбран, я бы добавил другое окно с NSView, которое является графическим контекстом чертежа, и окно будет действовать как UIViewController в приложении iOS.

Имеет ли это смысл?

Ответ №1:

У вас может быть NSViewController или NSWindowController на Mac, чтобы вставить логику вашего контроллера. Если вы собираетесь использовать отдельные окна, было бы разумно создать подклассы NSWindowController .

Комментарии:

1. Я читал в некоторых потоках здесь, что Mac NSViewController на самом деле не помогает ни в чем, поэтому я могу так же легко создать подпросмотр NSView или я ошибаюсь?

2. Эм … для правильного проектирования MVC (Model-View-Controller) вам необходимо иметь как NSView (ваш уровень просмотра), так и какой-либо объект контроллера, такой как NSViewController. Если вы не хотите использовать NSViewController, вы могли бы просто использовать подкласс NSObject в качестве уровня контроллера, но вам не следует помещать весь код вашего контроллера в подкласс NSView. Соответствующее правило заключается в том, что объект view никогда не должен напрямую взаимодействовать с моделью (вашим хранилищем данных).