2010-05-13 3 views
0

Я новичок в разработке iphone.iPhone: TabBarController как второй уровень навигационного контроллера

Я прочитал учебники о внедрении контроллера панели вкладок в окне (например, в качестве основного контроллера для приложения). Но как я могу создать контроллер панели вкладок как «автономный» UIViewController, который может вызываться контроллером навигационной панели?

В основном мой контроллер навигационной панели имеет массив UIViewControllers, который он отображает в таблице, а затем загружает соответствующий вид/контроллер, когда пользователь выбирает элемент.

Теперь я хочу, чтобы один из этих загруженных представлений/контроллеров был контроллером панели вкладок. Как я могу это сделать?

Я не уверен, как создать контроллер панели вкладок самостоятельно, не имея выход/экземпляр в делетете приложения.

Надейтесь, что сделал смысл. Благодарю.

+0

припоминает, что это было осуждено в директивах UI – willcodejavaforfood

ответ

3

Хотя предыдущий ответ был правильный, я просто хотел бы отметить, что компания Apple не будет довольна этим:

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

Цитата из: Apple View Controller Programming Guide

Руководства Читать Human Interface, ваше приложение может быть отклонен "нарушение правил интерфейса". Более того, вам также придется обрабатывать все vieWillAppear/Disappear и т. Д. Вручную. Я уверен, что есть другой способ разработки интерфейса.

С уважением, Пол

0

У вас есть два варианта.

Первый. Создайте UITabBarController (общий ресурс alloc-init) и нажмите его в UINavigationController.

Второй. Вы можете создать пользовательский UIViewController и разместить там UITabBar. После этого вы можете настроить его и нажать на свой пользовательский UIViewController на контроллер навигации. Код будет выглядеть следующим образом:

UITabBar *tabBar = [[UITabBar alloc] initWithFrame: 
    CGRectMake(0, self.view.frame.size.height - 49, 320, 49)]; 
tabBar.autoresizingMask = 
    UIViewAutoresizingFlexibleTopMargin | 
    UIViewAutoresizingFlexibleWidth; 
[self.view addSubview:tabBar]; 

Вы можете использовать подобный код в методе viewDidLoad от UIViewController, например. Для обработки события изменения вкладки, вы должны реализовать протокол UITabBarDelegate и назначить его (например, для самой UIViewController):

tabBar.delegate = self; 

После этого вы должны реализовать

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 

метод, Я помогу вам поймать события.

+0

Благодарности. Таким образом, нет возможности использовать tabbarcontroller, как в IB? Я хочу все функции tabbarcontroller, но вместо этого хочу иметь возможность отображать его в моем собственном представлении, а не в окне. – nebs

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