Обзор высокого уровня NSView? - PullRequest
1 голос
/ 16 октября 2010

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

В конце я знаю, что последуют несколько шагов, отражающих ключевые отношения, которые мне не хватает. Я надеюсь, что кто-то может объяснить в серии шагов, как создать объект представления, контроллер представления, связанный файл .xib, а затем загрузить его в окно (после очистки текущего представления).

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

Спасибо!

1 Ответ

1 голос
/ 16 октября 2010

как создать объект представления, контроллер представления, связанный файл .xib, а затем загрузить его в окно…

Это несколько вещей, и некоторые из них конфликтуют.

Если вы создаете представление в коде, вам не нужно (и не следует) также создавать его в кончике, и наоборот.

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

Вам не нужно создавать контроллер представления для большинства представлений. Чаще всего каждый контроллер владеет одним и тем же окном. Единственный раз, когда вам нужны контроллеры представлений, это когда вы управляете сложной иерархией представлений в одном окне (скорее всего, если вы сделаете свое приложение однооконным).

… (после очистки текущего представления).

В «Какао» нет «текущего представления». У вас может быть несколько окон, и у каждого из них есть глубокая иерархия представления, которую вы обычно не редактируете во время выполнения. Менять одно представление на другое за пределами какого-либо интерфейса с вкладками очень необычно.

Создание объекта просмотра в коде

Отправьте желаемому классу представления сообщение alloc, а возвращенному представлению - сообщение initWithFrame: (если иное не предусмотрено документацией класса). Вам, конечно, нужно будет разблокировать или автоматически выпустить это представление.

Создание объекта представления в кончике

Предоставление собственного пера (особенно для контроллеров представления)

Используйте шаблон view-nib в IB (New) или Xcode (Add File). Если вы создаете его в Xcode, не забудьте получить информацию о нем и сделать его локализуемым. Если вы создаете его в IB, вы должны сохранить его в одну из ваших папок .lproj; тогда он уже будет локализован.

Перо, созданное из этих шаблонов, будет содержать один пустой NSView. Вы можете изменить его класс и / или добавить подпредставления, как описано ниже.

Создание в существующем наконечнике

Перетащите «Пользовательский вид» из палитры «Библиотека» в окно пера, затем установите класс вида в Инспекторе №6.

Вы делаете это только для представления верхнего уровня в кончике. Для его подпредставлений, см. Ниже.

Помещение представления в иерархию представления окна

Если представление должно быть корнем иерархии представления окна (представление содержимого окна)

Установить вид содержимого окна.

В IB вы не можете изменить вид содержимого окна. Вместо этого вы что-то меняете - его класс, подпредставления и т. Д. Нет смысла пытаться заменить представление содержимого окна другим представлением в IB.

Если представление должно быть подпредставлением существующего представления

Способ сделать это в коде - отправить суперпредставлению сообщение addSubview:.

Если оба представления находятся в одном и том же наконечнике, создайте подпредставление и добавьте его в суперпредставление в одном действии. Перетащите «Пользовательский вид» из библиотеки в суперпредставление, а не в окно пера, затем установите класс подпредставления в Инспекторе №6.

(Если вы настраиваете одно из стандартных представлений Apple, вместо создания полностью оригинального настраиваемого представления, перетащите стандартное представление Apple, на котором вы основали свое представление, из библиотеки, а затем измените его класс на настроенный подкласс.)

...