Как загрузить внешний вид в NIB? - PullRequest
2 голосов
/ 29 марта 2010

У меня есть ViewController, который имеет свой собственный NIB. Я хотел бы встроить этот NIB в другой основной NIB. Как я могу сделать это в Интерфейсном Разработчике и как я могу ссылаться на это в коде?

Ответы [ 3 ]

2 голосов
/ 29 марта 2010

Шихан Алам,

Если вы создадите новый проект TabBar в XCode, вы сможете увидеть, как внешний NIB загружается из существующего объекта в IB.

Контроллер панели вкладок http://img.skitch.com/20100329-c2533dqft4q584424926fxfidb.preview.jpg

Вы можете указать NIB для viewController, используя IB через (Command-1)

Атрибуты контроллера первого вида http://img.skitch.com/20100329-p83bgd8qyieb5h3dg27beinkj3.preview.jpg
1 голос
/ 19 июля 2011

Подход Алекса должен работать, но если я правильно понимаю, вы бы предпочли способ без необходимости программно [self.view addSubview:embeddedView] в методе -viewDidLoad контроллера основного вида.

Я написал, как мы встраиваем перья с пользовательским просмотром в другие перья в длинном посте в блоге. Crux переопределяет -awakeAfterUsingCoder: в вашем пользовательском представлении, заменяя объект, загруженный из «основного» пера, тем, который загружен из «встроенного» пера.

Обратите внимание, что наш подкласс пользовательских элементов управления UIView, а не UIViewController (см. Документы Apple на контроллерах пользовательских представлений : «Не следует использовать несколько пользовательских контроллеров представления для управления различными частями одной и той же иерархии представления». ".)

1 голос
/ 29 марта 2010

Каждый NIB имеет владельца, который обычно является контроллером для основного вида в этом NIB. Вы можете легко создать экземпляр вашего контроллера представления в Интерфейсном Разработчике. Просто перетащите объект контроллера представления и установите свойство NIB соответствующим образом.

Проблема в том, что у вас нет способа обратиться к представлению этого контроллера из Интерфейсного Разработчика. Вам нужно будет написать код, чтобы добавить представление встроенного контроллера представления как подпредставление представления главного контроллера представления. Как вы на самом деле это делаете, зависит от вашего приложения, но этого должно быть достаточно, чтобы в главном контроллере представления была розетка, которая ссылается на встроенный контроллер представления.

Затем в реализации viewDidLoad главного контроллера представления вы добавляете view встроенного контроллера представления как подпредставление view контроллера основного представления. Вам, вероятно, придется также корректно подогнать рамку встроенного представления.

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