Каковы соглашения для объявления UITabBarController в mainwindow.xib? - PullRequest
1 голос
/ 12 ноября 2009

У меня есть файл mainwindow.xib с UITabBarController в качестве основного контроллера представления приложения. Итак, внутри UITabBarController я добавил около 10 sub UIViewController объектов в виде вкладок. Большинство из них являются просто подклассом UITableViewController или UINavigationController, содержащим подкласс UITableViewController.

В этом дизайне каждый UIViewController полностью загружается при запуске приложения, включая вызов метода viewDidLoad каждого контроллера представления. Есть ли способ обойти это? Поскольку контроллеры представления являются просто UITableViewControllers без других выходов, кажется чрезмерным создание NIB для каждой вкладки (что, как я полагаю, позволило бы viewDidLoad вызываться только при первом переключении пользователя на вкладку? Или я не прав? ) * +1010 *

Во всяком случае, мой вопрос в основном таков: как это условно сделано? Если у вас есть 10 различных контроллеров представления на одном UITabBarController, вы положили их все в mainwindow.xib? Если да, то должен ли каждый иметь свой собственный NIB, а если нет, куда вы их помещаете и как добавить их на панель вкладок?

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

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

В MainWindow.xib, где у вас есть определенная панель вкладок, вы все равно можете установить в каждой вкладке тип контроллера представления, который будет вызываться, а также файл XIB, который будет использоваться для этого типа (создайте новый проект с помощью приложения "TabBar" шаблон и второй вид по умолчанию будет выглядеть так).

Затем, когда вы нажимаете вкладки, контроллеры представлений будут созданы из разных файлов XIB, которые вы определили.

Обратите внимание, что это означает, что если вы используете IB для добавления кнопок на панель навигации, вы должны сделать это обратно в XIB TabBar, а не в XIB, который вы используете для определения представления. Вы все еще можете связать действия с определением контроллера представления на вкладке.

0 голосов
/ 12 ноября 2009

Apple предлагает сделать это для чистых файлов NIB так: Каждое вложенное представление в своем собственном файле NIB .

Вместо этого я бы программно создал UITabBarController . Таким образом, вы можете определить все ваши простые представления в коде и все же загружать сложные представления из файлов NIB .

Лично я предпочитаю создавать как можно больше своих взглядов программно. Скомпилированный код занимает меньше места, чем файлы NIB, и я чувствую, что у меня больше контроля. В основном я использую Interface Builder для макетирования приложений.

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