Создайте пользовательский вид с помощью пера и используйте его в окне - PullRequest
8 голосов
/ 11 июля 2011

Я довольно долго боролся с этой проблемой, и я не могу понять это сам.

Это ситуация: Я хочу иметь собственное представление на основе Nib со своим собственным ViewController. Затем я хочу добавить этот вид в окно. Поэтому окно должно содержать мой пользовательский вид.

Итак, я создам очень простой пример, подобный этому:

  1. В Xcode 4 я создаю новое пустое основанное на документе приложение Какао
  2. Я создаю новый класс Какао, который должен расширяться от NSViewController (что приводит к созданию пера вместе с файлом .h и .m. Имя созданного файла .h, .m und .xib: FaceViewController для тестирования он должен отображать только текст.
  3. Я открываю NSViewController.xib в InterfaceBuilder, добавляю многострочный текстовый компонент и помещаю его в пользовательское представление, которое уже находится в файле xib. Я делаю текст, охватывающий весь вид.
  4. В MyDocument.xib я также добавляю заполнитель Custom View, который должен быть заменен моим пользовательским FaceView.

С этой отправной точки все, что я пытался включить созданным View + ViewController на моем MyDocument.xib, не удалось, и область, где должен отображаться мой текст, остается пустой (как фон нижележащего окна.

Так что мой вопрос на самом деле заключается в том, что мне нужно сделать, чтобы мой FaceView был загружен в пользовательский вид, который я поместил на MyDocument.xib. Вот некоторые вещи, которые мне не ясны:

  • Пользовательский вид простирается от NSView, поэтому я хотел изменить это на свой FaceView, но вид не существует как класс, но определен в InterfaceBuilder в xib, мне нужно установить это значение, отличное от NSView
  • Нужно ли выделять, инициализировать FaceViewController в коде или достаточно перетащить его в любой из моих двух .xibs?
  • Могу ли я использовать InterfaceBuilder для размещения моего FaceView или мне нужно делать это программно?

Я действительно думал, что создание собственного вида, подобного этому, было бы очень просто, но до сих пор получалось совсем наоборот, поэтому любая помощь будет принята с благодарностью.

1 Ответ

4 голосов
/ 12 июля 2011

Вы можете создать свой FaceViewController, либо добавив его в MyDocument.xib, либо создав его с помощью alloc, init.

Чтобы разместить FaceView, вам придется делать это программно, вы можете использовать

[customView addSubview:[FaceViewController view]];

из, если вы хотите заменить представление

[customView replaceSubview:oldView with:[FaceViewController view]];
...