2012-04-28 2 views
0

У меня есть WizardSequenceViewController с IBOutlet WizardView *_wizardView. Во многих файлах WizardSequenceViewController.xib у меня есть выход view, подключенный к владельцу файла - WizardSequenceViewController. У меня есть подвид этого представления, определенный с атрибутом класса, установленным на WizardView. Я связал это WizardView с выходом в Владелец файла. Наконец, в моем WizardView.xib у меня есть UILabel, который я поместил в файл, чтобы проверить, отображается ли представление. Когда я выбираю WizardSequenceViewController из моей панели вкладок, я вижу супервизор view, но не подвью _wizardView. Когда я устанавливаю точку останова в моем методе -(id)initWithCoder в моем WizardView.m файле, я вижу, что он останавливается там, поэтому я знаю, что он вызывает этот инициализатор (и, следовательно, должен использовать xib для загрузки этого файла). Я пробовал много итераций и вариаций, чтобы заставить эту вещь работать, но я не могу, и я схожу с ума. У кого-нибудь есть идеи?Загрузка пользовательского UIView из XIB-файла в XIB для просмотра ViewController

+0

Вы пробовали 'initWithNibName: @" WizardView "'? – Wienke

+0

@Wienke, зачем мне это требовать, если я установил выход для '_wizardView', и я знаю, что он вызывает инициализатор' initWithCoder' для 'WizardView'? –

+0

Я даже не знал, что наконечники считаются закодированными. При загрузке я всегда использовал имя nibName. Это была простая идея попробовать. Возможно, вы можете вызвать 'initWithNibName' * из *' initWithCoder'. – Wienke

ответ

0

От Apple, док «Просмотр Основы контроллера, о регулируемом View Controllers»:

Соответствие один-к-одному между контроллером представления и мнения в его иерархии видов является ключевым фактором дизайна. Вы не должны использовать несколько настраиваемых контроллеров представлений для управления различными частями одной и той же иерархии представлений. Аналогичным образом, вы не должны использовать один пользовательский объект контроллера просмотра для управления несколькими экранами.

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

Возможно, вы не можете установить функцию просмотра и подзапроса в диспетчере представлений. И я не уверен, что назначение подзаголовка отдельному подклассу NSObject тоже будет работать, потому что как бы вы его представили? Не могли бы вы написать программный код subview, используя initWithFrame и addSubview, вместо того, чтобы сделать его выходом? Или, если вы действительно хотите настроить его графически, можете ли вы назначить его отдельному контроллеру представления в качестве владельца? Затем контроллер верхнего уровня вызовет presentModal на контроллере дополнительного представления. Или, если все, что вам нужно, это UILabel в качестве подзаголовка, просто добавьте ярлык в основной вид?

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