Отключить навигацию по панели вкладок в корневом представлении - PullRequest
6 голосов
/ 13 января 2010

У меня есть приложение на основе панели вкладок с навигацией по каждому элементу панели вкладок. Когда я перехожу к другому представлению в любом элементе панели вкладок и нажимаю на элемент панели вкладок, тогда вызывается контроллер корневого представления для этого элемента панели вкладок. Это как PopToRootView. Можем ли мы отключить эту ситуацию?

Ответы [ 4 ]

6 голосов
/ 03 апреля 2011

Да, вы можете отключить автоматический popToRootViewController, применив метод UITabBarControllerDelegate на вашем контроллере вида:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if(self.navigationController == viewController) {
        return NO;
    }
    return YES;
}

Благодаря: Отключить действие - пользователь нажимает на элемент панели вкладок, чтобы перейти к контроллеру корневого представления

3 голосов
/ 19 декабря 2012
  1. Включите UITabBarControllerDelegate в заголовочный файл.
  2. попробуйте это:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
      {
          if(bool_youDontWantPopToRootView)
               return (tabBarController.selectedViewController != viewController);
          return YES;
      }
    

Для bool_youDontWantPopToRootView вы можете добавить в него условие, если хотите, чтобы оно велось как поведение по умолчанию.

3 голосов
/ 13 января 2010

Хотя говорят, что вы не должны создавать подкласс UINavigationController, вы можете сделать то, что хотите, сделав подкласс UINavigationController и переопределив метод - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;.

Выполнение этого (без вызова super popToRootViewController) предотвратит появление контроллеров представления при нажатии на элемент панели вкладок. Это может как-то натолкнуть вас на некоторые проблемы, но, надеюсь, это сработает для вас.

1 голос
/ 19 декабря 2012

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; когда вы передаете 'NO' в анимированном аргументе, вы будете перенаправлены в корневой режим без анимации

вам не нужно использовать этот метод, когда вы нажимаете на любую панель вкладок, это поведение по умолчанию контроллера навигации, что он поддерживает свой собственный стек VC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...