как создать объект представления, контроллер представления, связанный .xib, а затем загрузить его в окно…
Это несколько вещей, и некоторые из них противоречат друг другу.
Если вы создаете представление в коде, вам не нужно (и не следует) также создавать его в nib, и наоборот.
Если вы создаете контроллер представления для загрузки пера, вы будете создавать представление в пера, поэтому вам определенно не следует создавать такое же представление в коде.
Вам не нужно создавать контроллер представления для большинства представлений. Чаще всего каждому контроллеру принадлежит ровно одно окно. Единственный раз, когда вам нужны контроллеры представления, — это когда вы управляете сложной иерархией представлений в одном окне (скорее всего, если вы делаете свое приложение однооконным).
… (после очистки текущего вида).
В Cocoa нет «текущего представления». У вас может быть несколько окон, и каждое из них имеет глубокую иерархию представлений, которую вы обычно не редактируете во время выполнения. Замена одного вида на другой за пределами какого-либо пользовательского интерфейса с вкладками очень необычна.
Создание объекта представления в коде
Отправьте требуемому классу представления сообщение alloc
, а возвращенному представлению сообщение initWithFrame:
(если иное не указано в документации класса). Вам, конечно, потребуется освободить или автоматически освободить это представление.
Создание объекта представления в кончике
Предоставление ему собственного пера (особенно для контроллеров представления)
Используйте шаблон view-nib в IB (новый) или Xcode (добавить файл). Если вы создаете его в Xcode, не забудьте получить информацию о нем и сделать его локализуемым. Если вы создаете его в IB, вы должны сохранить его в одну из ваших папок .lproj; тогда он уже будет локализуемым.
Перо, созданное из этих шаблонов, будет содержать один пустой NSView. Вы можете изменить его класс и/или добавить подпредставления, как описано ниже.
Делаем это в существующем наконечнике
Перетащите «Пользовательский вид» из палитры «Библиотека» в окно пера, затем установите класс вида в инспекторе ⌘6.
Вы делаете это только для представления верхнего уровня в наконечнике. О его подвидах см. ниже.
Помещение представления в иерархию представлений окна
Если представление должно быть корнем иерархии представлений окна (представление содержимого окна)
Установите вид содержимого окна.
В IB вы не можете изменить вид содержимого окна. Вместо этого вы что-то меняете в нем — его класс, подпредставления и т. д. Нет причин пытаться заменить представление содержимого окна другим представлением в IB.
Если представление должно быть подвидом существующего представления
Способ сделать это в коде — отправить супервизору сообщение addSubview:
.
Если оба представления находятся в одном и том же наконечнике, создайте подпредставление и добавьте его в суперпредставление в том же действии. Перетащите «Пользовательский вид» из библиотеки в суперпредставление, а не в окно пера, затем установите класс подпредставления в инспекторе ⌘6.
(Если вы настраиваете одно из стандартных представлений Apple, а не создаете полностью оригинальное пользовательское представление, перетащите стандартное представление Apple, на основе которого вы создали свое, из библиотеки, а затем измените его класс на свой настроенный подкласс.)
person
Peter Hosey
schedule
16.10.2010