Как добавить приложение TabBar в приложение для навигации NavigationController

У меня есть простое приложение на основе NavigationController. В главном окне отображается TableView и выбор элемента загружает подзадачу. Я использовал интерфейс Builder для просмотра пользовательского интерфейса.

Теперь я хочу добавить TabBar в приложение. Где я могу это выразить? Нужен ли мне TabBarController? Должно ли оно находиться в MainWindow.xib или RootViewController.xib?

Как связать его с моим навигационным контроллером?

Ответ 1

Окончательный ответ на этот вопрос представлен в документации iPhone SDK в Руководстве по программированию контроллера просмотра для iPhone.

Просмотр руководства по программированию контроллера: объединение контроллеров просмотра

Эта ссылка идет прямо в раздел и включает в себя обсуждение правильных способов создания интерфейсов навигации и вкладок.

Ответ 2

Я делаю это в нескольких моих приложениях. Трюк добавления панели вкладок в приложение на основе navigationController - НЕ использовать TabBarController. Добавьте панель представления в представление, сделайте контроллер представления для этого вида TabBarDelegate и ответьте на выбор пользователя на панели вкладок в коде контроллера вида.

Я использую Tab Bars для добавления дополнительных представлений в представление панели вкладок в виде под-представлений, для перезагрузки представления таблицы с различными наборами данных, для перезагрузки UIPickerView и т.д.

Ответ 3

Взгляните на образец кода UICatalog. В нем много замечательных вещей, в том числе переход от одного взгляда к другому.

В вашем случае вам нужно использовать метод делегата UITableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

В этом методе вы создадите и отобразите свой контроллер представления табуляции. Это может быть настраиваемый контроллер с ассоциированным Nib, или вы можете создать все это в коде в зависимости от ваших обстоятельств.

Ответ 4

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

Панель вкладок будет вашим компонентом самого высокого уровня, тогда вы можете загрузить навигационные контроллеры для каждой вкладки. Оттуда он должен быть довольно стандартным. Мне пришлось изучить этот трудный путь некоторое время назад.

Вы можете начать с основного шаблона приложения Tab Bar в XCode, он должен настроить базовую панель вкладок с двумя простыми представлениями.

Ответ 5

Лучше всего иметь навигационную панель, встроенную в приложение с вкладками, когда это возможно. Выполнение этого по-другому создает некоторые осложнения, трудно, когда делается с IB и приводит к большим проблемам.

Ответ 6

Вы можете использовать Interface Builder для редактирования MainWindow.xib и добавить контроллер панели вкладок в свой навигационный контроллер. Вы также можете сменить контроллеры представлений UITabBarController на View/Navigation/Table View/Image Picker Controllers с окном IB Inspector. Он будет работать.

Однако я действительно не предлагаю вводить Tab Bar Controller в контроллер навигации. Связь между этими контроллерами будет запутана, если вы пойдете дальше (сделайте ее более сложной).

Предполагая, что у вас есть Table View Controller в вашем контроллере панели вкладок и вы хотите открыть подробное представление. По дизайну вы можете захотеть сказать контроллеру навигации, чтобы направить представление в стек, но при этом сделайте так, чтобы подробный вид стал тем же самым уровнем с вашим контроллером панели управления (как в контроллере навигации), так и с помощью Table View Controller. Это довольно странно, по крайней мере для меня...