#objective-c #uiviewcontroller #views #structure
#objective-c #uiviewcontroller #Вид #структура
Вопрос:
У меня есть приложение, в котором изначально есть TabBarController, каждая вкладка является ViewController, и у каждого есть кнопка, которая вызывает другие контроллеры.
Итак, как я могу это структурировать? Наличие одного основного RootViewController (если да, то как?)? Или вызывать в appdelegate только TabBarController, и в каждом ViewControllers внутри вкладки вызывать другие контроллеры?
Каков наилучший способ, чтобы я мог продвигаться вперед, возвращаться назад и быстро переключать представления?
Не знаю, ясно ли я выразился…
Спасибо, ребята.
Ответ №1:
Обычно вы начинаете с шаблона под названием «Приложение панели вкладок», а начиная с Xcode 4, загружаете перо MainWindow, в котором находится панель вкладок, а панель вкладок настроена в IB на наличие двух контроллеров просмотра, называемых «FirstViewController» и «SecondViewController»…
Вы можете следовать этому шаблону, если он вам подходит, в противном случае вы можете захотеть начать с приложения на основе представления и добавить свою собственную панель вкладок. Лично я считаю, что проще управлять панелью вкладок через UITabBarDelegate
, особенно если вы планируете сделать что-нибудь немного эзотерическое.
Редактировать:
В принципе, один из двух способов, если вы планируете загружать стек навигационного контроллера или одно модальное представление.
1)
ThirdViewController * controller = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
UINavigationController * myNavigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentModalViewController:myNavigationController animated:YES];
[controller release];
[myNavigationController release];
2)
ThirdViewController * controller = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
[self presentModalViewController:controller animated:YES];
[controller release];
в любом случае вернитесь в среду Tab, вызвав следующее на контроллере представления, который вызывает present modal.
[self dismissModalViewControllerAnimated: ДА];
Комментарии:
1. Если бы вам пришлось переключаться с первого или второго ViewController на другой контроллер, где бы вы это назвали? В rootTabBarController?
2. вы программно хотите переключиться с одного на два, основываясь на чем-то… скажем, нажатие кнопки? установите свойство selectedViewController.
3. Но, например, представьте, что у меня есть TabBarController, есть вкладки, которые называются AViewController, BViewcontroller и CViewController. Если я хочу, например, чтобы при нажатии кнопки в AViewController отображался другой вид, каков наилучший способ сделать это? Вызов представления внутри AViewController или отправка селектора в корневой TabBarController и вызов его там? Кстати, я читал, что я никогда не должен создавать подкласс UITabBarController, как я могу приостановить это?