Objective-c Как правильно управлять несколькими представлениями и контроллерами

#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, как я могу приостановить это?