Thursday, December 27, 2012

NavigationController внутри TabBarController http://hashcode.ru/questions/61867/objective-c-navigationcontroller-%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8-tabbarcontroller


NavigationController внутри TabBarController (вариант1)





Стоит задача - реализовать на одной из вкладок TabBar'а выпадающий список с вариантами выбора (своего рода радиобаттон). Насколько сумел разузнать, это реализуется применением NavigationController. Однако, нигде не смог найти, как уместить табличное представление, табы, навигацию, и организовать взаимодействие между ними. Как это выглядит концептуально, или где об этом можно внятно почитать (желательно на русском)?

Не знаю используете ли вы интерфейс билдер, но программно легко делается. В appDelegate создаете UITabBarController, у него есть свойство viewControllers - это массив состоящий из UIVIewController'ов или его наследников.Таким образом каждый элемент массива viewControllers будет отдельной вкладкой(если их больше 5 то автоматически добавится вкладка More).Добавляете UITabBarCOntroller в UIWindow как rootViewController. Если вам навигация нужна внутри каждой вкладки, то делате следующее:
 NSMutableArray *arrayOfViewControllers = [[NSMutableArray alloc] initWithCapacity:4];//можно сделать просто init и не указывать явно размер.
  UIViewController *vcWithRadioButtons = [[UIViewController alloc] init];
  UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vcWithRadioButtons];
  [arrayOfViewControllers addObject:nav];
 [nav release];[vcWithRadioButtons release];
 ...//Повторяете еще n раз (в моем случае 3 т.к. я сделал массив на  4 элемента)процесс создания UIViewController'а, UINavigationContoller'a  и добавление его в массив.
  UITabBarController *tbController = [[UITabBarController alloc] init];
  tbController.viewControllers = arrayOfViewControllers;
  [arrayOfViewControllers release];
self.window.rootViewController = tbController;
  [tbController release];
В общем то и все. Получили таб бар с 4мя вкладками, в каждой из которых есть навигация. Дальше уже реализуйте контроллер с радиокнопками.
Концептуально:
UIWindow->UITabBarController ->UINavigatinController->UIVIewController
                         ->UINavigatinController->UIVIewController
                          ->UINavigatinController->UIVIewController
                          ->UINavigatinController->UIVIewController
  
Как-то так. ;) Конкретно того, что вы спрашивали здесь нет, но есть другое, и на русско ;)
отвечен 13 Дек '11 0:14
Sammgn's gravatar image
Sammgn
474
Хороший способ, перешол на него, когда отказался от использования .xib файлов. Такими строчками можно прикрепить картинки и названия к вкладкам)))
vcWithRadioButtons1.title = @"UITabBarSystemItemTopRated";
vcWithRadioButtons1.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:1];
(15 Дек '11 14:39)Red Rocket

No comments:

Post a Comment