2010-01-13 3 views
6

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

ответ

3

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

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

+0

Не могли бы вы рассказать мне, что значит - (NSArray *) popToRootViewControllerAnimated: (BOOL) анимированный; с передачей как «НЕТ» в анимированном параметре. – Himanshu

+0

@mjdth Вы случайно знаете, что проблема не в том, что «приложение отклоняется Apple»? В противном случае это работает как шарм. Спасибо за ваш совет. –

6

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

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

Благодаря: Disable action - user taps on tabbar item to go to root view controller

2
  1. Включите UITabBarControllerDelegate в файле заголовка.
  2. попробовать это:

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

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

1

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

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