Как обращаться с контроллерами просмотра?

#iphone #controller #navigation #tabbar

#iPhone #контроллер #навигация #панель вкладок

Вопрос:

Привет, ребята, я работаю над приложением.Где есть начальный экран с 5 кнопками.При нажатии каждой кнопки я хочу открыть экран с панелью вкладок с 5 контроллерами просмотра.Я имею в виду, когда вы нажимаете на кнопку, открывается панель вкладок.И на панели вкладок также есть кнопка «Назад».При нажатии кнопки «Назад» я хочу вернуться на главный экран и наоборот. Как это сделать, ребята.Любой учебник, ссылки, пример кода были бы оценены.

Большое спасибо всем

Комментарии:

1. Zoozoo, есть главный экран с контроллером навигации, имеющим 5 кнопок, при нажатии любой кнопки я хочу открыть приложение на основе вкладок, например, с 4 вкладками. Теперь, когда появляются вкладки, там должна быть кнопка «Назад», и, нажав на нее, я хочу вернуться к главному экрану кнопок. Теперь ты меня понял

Ответ №1:

Контроллер панели вкладок в стеке навигации сложен. Поскольку каждый контроллер вкладок может иметь также сам контроллер навигации.

Есть WindowManager класс. Он должен владеть обоими — FirstViewController и — TabbarController

Все компоненты и сами UITabBarControllers должны быть созданы в классе WindowManager. У него init может быть подобный код, сделайте аналогичный для двух tabbarcontrollers.

 self.tabBarController = [[UITabBarController alloc] init];
    self.controllers = [[NSMutableArray alloc] init];

// initialize the view controllers and navigation controllers for the tab bar

self.friendsVC = [[FriendsVC alloc] initWithNibName:@"FriendsView" bundle:nil];
UINavigationController *friendsNVC = [[UINavigationController alloc] initWithRootViewController: friendsVC];
friendsNVC.navigationBar.barStyle = UIBarStyleBlack;
[controllers addObject:friendsNVC];  
[friendsNVC release];

self.paymentsVC = [[PaymentsVC alloc] initWithNibName:@"PaymentsView" bundle:nil];
UINavigationController *paymentsNVC = [[UINavigationController alloc] initWithRootViewController: paymentsVC];
paymentsNVC.navigationBar.barStyle = UIBarStyleBlack;
[controllers addObject:paymentsNVC];
[paymentsNVC release];  

tabBarController.viewControllers = controllers;
tabBarController.selectedIndex = 0; 
tabBarController.delegate = self;

self.view = tabBarController.view;
  

В WindowManager у вас может быть два метода, таких как,

 [WindowManager showViewController] and
[WindowManager showTabbarController].

- showViewController {
  //Initiate View controller and use [self.window addSubView:vc.view];
}

- showTabbarController {
  // initiate the tabbar manager
}
  

У вас может быть кнопка «Назад» в верхней части вашего первого контроллера панели вкладок с левой стороны, чтобы вызвать

 [WindowManager showViewController];
  

Комментарии:

1. Привет, Карим Такс, за ваш ответ, я пробовал этот способ, но проблема возникает, когда я хочу перейти к главному экрану, он не появляется. Сначала я взял homeviewcontroller с navigationcontroller, затем я переношу его в вид панели вкладок, но когда я нажимаю на кнопку «Назад» на панели вкладок, он не отображается в виде «Домой». Есть ли у вас какие-либо идеи, как перейти к главному просмотру. Я попытался вызвать [self.navigationcontroller poptoviewcontroller: ДА]; и [self.navigationcontroller.tabbarcontroller poptoviewcontroller: ДА]; также

2. Наличие контроллера панели вкладок в стеке навигации нежелательно и не рекомендуется. Я отредактировал ответ более детально, чтобы сделать то же самое.

3. Да, я знаю, что это не самый лучший подход, и тогда организация стека не была бы хорошей. Но что я мог бы сделать, чтобы клиент хотел таким образом. Я сказал TV, что это невозможно сделать таким образом, либо это должно быть основано на вкладках, либо на навигации.

4. Хорошо, я попробую это……………….. И что вы подразумеваете под классом window manager — это класс делегата приложения или я могу использовать для этого класс контроллера anyview

5. @Karim спасибо, у меня это сработало. Я попробовал. Но я думаю, что это создало бы проблему в управлении памятью, поскольку стек будет продолжать увеличиваться. Итак, я собираюсь использовать пользовательский домашний просмотр для каждого просмотра панели вкладок, который я буду вызывать каждый раз с помощью кнопки «Назад». Спасибо