Подтвердить что ты не робот

Разница между NSWindowController Vs NSViewController

Я исхожу из фона iOS и начинаю изучать Cocoa. В iOS, если у нас нет нескольких целей для iPad и iPhone, мы обычно имеем одно окно и управляем экраном с помощью UIViewControllers. Где каждый новый экран будет в большинстве случаев отображаться на UIViewController.

Однако в cocoa это похоже на то, где новый экран/окно управляется NSWindow, а подкомпоненты управляются NSViewController. Поэтому, если у меня есть несколько оконных приложений, у меня должно быть отдельное NSWindowController для каждого окна.

Является ли этот подход правильным или я имею недоразумение?

4b9b3361

Ответ 1

С iPhone SDK и Leopard SDK они представили контроллеры представлений или NSViewController и UIViewController. Поскольку их имена предполагают, что они делают, это управлять представлениями

Контроллеры представлений предназначены для управления представлениями. Текущая тенденция в дизайне пользовательского интерфейса - это одно окно, множественный просмотр. Это означает, что есть одно Окно и внутри него, разная группа взглядов, предназначенных для разных целей, может быть изменена и изменена. Таким образом, контроллеры View обрабатывают их для программистов по хорошо установленному шаблону. В настоящее время контроллеры просмотра очень важны для программирования iPhone и iPod touch, поскольку платформа основана на модели Single-Window и Multiple View. Тем не менее, мне не кажется, что использование контроллера просмотра очень популярно для Mac. как насчет контроллера окон, например NSWindowController? Его коллега UIWindowController не существует для iPhone и iPod touch, потому что для этой среды есть только одно окно. В отличие от контроллеров представлений, NSWindowController предназначен для программ на основе документов. Ну, программа на основе документов может использовать несколько окон. Таким образом, разумно думать, что NSWindowController предназначен для программ на основе документов, как говорит документ Apple.

Ответ 2

Я также пришел из iOS и начал кодировать приложения для Mac некоторое время назад, главным образом из документации Apple.

Мне кажется, что на рабочем столе вам почти никогда не нужно NSViewController (одним большим исключением будет окно с вкладками и несколькими видами, например, экран приветствия GarageBand).

В большинстве случаев у вас есть один NSWindowController для каждого окна. Сначала изучите связь между NSWindow и NSWindowControllerNSDocument, если вы создаете приложение на основе документов).

Как только вы достигнете этого, начните экспериментировать с NSViewController.


ОБНОВЛЕНИЕ: Похоже, что с момента появления раскадровки для Mac-приложений Apple ожидает, что большая часть логики представления представлений должна быть перенесена из более старого NSWindowController к более новому NSViewController, больше соответствует тому, как структурировано приложение iOS. Я не очень хорошо разбираюсь в том, где именно рисовать линию, или какой код должен оставаться в оконном контроллере (или все еще должен быть подклассом вообще).