20

Я исхожу из iOS фон и начать изучать какао. На iOS, если у нас нет нескольких целей для iPad и iPhone, мы обычно имеем один Окно и управляем экраном, используя UIViewControllers. Где каждый новый экран будет в большинстве случаев отображаться на UIViewController.Разница между NSWindowController Vs NSViewController

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

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

+0

Что вы здесь не сказали (и должно ясно), что вы приходят из iOS и теперь начинаете работать с программированием на MacOS, правильно? –

+1

У вас есть немного назад на части iOS. 'UIViewController' не управляет' UIWindow' - 'UIWindow' управляет' UIViewController'. Хотя на экране обычно присутствует только один UIViewController (это изменилось в iOS5 с контроллерами дочерних элементов), они все еще являются подкомпонентами UIWindow. Дело в том, что UIWindow имеет свойство rootViewController, но viewcontrollers не имеют свойства окна. Теперь с OSX вы можете иметь несколько NSWindows, но они все еще управляют своими NSViewControllers. Короче говоря, иерархия: Window> ViewController> Views – CrimsonDiego

+0

Спасибо, да, я исхожу из фона iOS :) Допустим, у меня есть несколько отдельных окон в моем приложении для Mac. Какие ставки подходят для принятия, где каждое окно будет отображаться на windowController или viewController. Например, когда мы дважды нажимаем файл в xCode, он открывает новое окно. – rustylepord

ответ

9

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

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

+0

На I разработке iPhone мы используем UIVIewControllers, как правило, новый экран будет управляться UIViewController. Однако на macs можно с уверенностью предположить, что это делается через NSWindowController? Читая документацию Apple, они полагают, что все приложения с несколькими окнами принадлежат к приложениям на основе документов. Итак, если мы разрабатываем многооконное приложение, такое как xcode, нужно ли также документировать? Даже у IOS есть UIWindowController, поскольку я знаю, что это не в опубликованном API. – rustylepord

+0

У вас может быть несколько окон без приложений на основе документов. Например, постоянные панели/инспекторы ... –

1

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

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

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

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


UPDATE: кажется, что с моментом введения раскадровки для Mac приложений тоже, Apple ожидает, что большая часть логики вида представления должны быть перенесены из старой NSWindowController к новым NSViewController, в соответствии с тем, как структурировано приложение iOS. Я не очень хорошо знаю точно , где, чтобы нарисовать линию, или какой код должен оставаться в оконном контроллере (или все еще должен быть подклассифицирован вообще).

+0

Итак, пока что я получил до сих пор, так как вы не можете иметь несколько окон на iOS, модель представляет собой несколько контроллеров представления в одном окне, хотя мы получаем впечатление, что мы работаем с разными экранами. Экран изображен Viewcontroller на iOS. Но на Mac OSX, поскольку вы можете иметь несколько окон, каждое окно управляется оконным контроллером, и мы можем включать контроллеры представлений для управления дополнительными компонентами. – rustylepord

Смежные вопросы