Как встроить представление UIViewController из одной XIB в представление в другой XIB? - PullRequest
6 голосов
/ 11 февраля 2011

MyViewController.xib имеет класс Владельца Файла, установленный на MyViewController (подкласс UIViewController), и представление Владельца Файла, подключенное к UIView, содержащему некоторые подпредставления.

OtherViewController.xib имеет класс Владельца Файла, установленный на UIViewController, и представление Владельца Файла, связанное с пустым UIView.

Возможно ли в Интерфейсном Разработчике встроить представление MyViewController в представление в OtherViewController.xib?

Я попытался добавить экземпляр MyViewController в OtherViewController.xib, но я не могу поместить его в представление (потому что это не UIView) и не могу добраться до представления, связанного с MyViewController в MyViewController.xib (только сам контроллер представления и ничего с ним не связано, переходит в OtherViewController.xib).

Ответы [ 4 ]

7 голосов
/ 11 февраля 2011

Вы, вероятно, не хотите этого делать. Следуйте предупреждению в Руководстве по программированию View Controller:

Примечание. Если вы хотите разделить иерархию представления на несколько подрайонов и управлять каждым из них по отдельности, используйте общие объекты контроллера (пользовательские объекты, происходящие из NSObject) вместо объектов контроллера представления для управления каждым подрайоном. Затем используйте один объект контроллера представления для управления общими объектами контроллера.

Подкласс UIViewController, вид которого не заполняет окно, не будет вести себя так, как вы могли бы ожидать. Он не будет получать сообщения о жизненном цикле контроллера представления, сообщения о ротации или его свойства parentView/navigation/tabBarController установлены правильно.

UITableViewCell не должен быть представлением для UIViewController. У него может быть некоторый объект контроллера, отвечающий за управление его поведением (хотя я подозреваю, что это поведение, вероятно, все может содержаться внутри самого представления ячейки), но этот контроллер не должен наследоваться от UIViewController.

4 голосов
/ 25 октября 2012

Это изменилось с тех пор, как были опубликованы некоторые другие ответы - вы хотите взглянуть на последнюю документацию для UIViewController, в частности раздел руководства "Представление контроллеров представления от других контроллеров представления" и раздел справочного руководства по классу «Реализация контроллера представления контейнера».Также есть видео с WWDC 2012, посвященное теме в iTunes: Сессия 236 - Эволюция контроллеров представления на iOS .(Видео очень полезно, это не просто общий обзор.)

0 голосов
/ 11 февраля 2011

Это можно сделать программным путем, добавив ссылку на OtherViewController в MyViewController. Это, возможно, немного грязно и в некотором роде заставляет меня спрашивать, почему вы хотели бы сделать это, но ... я верю, что вы знаете, что делаете.

Внимание. Поскольку «Другое» будет содержать ссылку на «Мое», вы захотите сохранить Мое внутри Другого. но не повторяю, не оставляйте «Другое» внутри «Моего» цикла такого рода, что приведет к ошибкам.

Удачи и не забудьте проголосовать

ps, если у вас есть немного больше деталей, я могу помочь вам разобраться в лучшем дизайне, чтобы избежать подобных вещей:)

0 голосов
/ 11 февраля 2011

Вы можете поместить все это в один xib. Например, просто поместите все это в свой MainWindow.xib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...