У меня есть приложение на основе панели вкладок с навигацией по каждому элементу панели табуляции. Когда я перехожу к другому виду в любом элементе панели табуляции и нажимаю на элемент панели вкладок, вызывается контроллер корневого представления на этом элементе панели табуляции. Это похоже на PopToRootView. Можем ли мы отключить эту ситуацию?Отключить панель вкладок, переходящую в корневой вид
ответ
Хотя они говорят, что вы не должны подкласс UINavigationController
, вы можете, что вы хотите, делая подкласс UINavigationController
и переопределение метода - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
.
Выполнение этого действия (и не вызов суперпотокового контроля) предотвратит появление элементов управления представлением при нажатии на элемент панели вкладок. Это может привести к некоторым проблемам, но, надеюсь, это сработает для вас.
Да, вы можете отключить автоматическую 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
- Включите UITabBarControllerDelegate в файле заголовка.
попробовать это:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { if(bool_youDontWantPopToRootView) return (tabBarController.selectedViewController != viewController); return YES; }
Для bool_youDontWantPopToRootView, вы можете добавить условие в него, когда вы хотите, чтобы вести себя как поведение по умолчанию.
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
когда вы передаете «NO» в анимированный аргумент, который вы будете перенаправлены на корневой зрения без анимации
вам не нужно использовать этот метод, в то время как вы нажмете на любой панели вкладок его поведение по умолчанию навигационного контроллера что он поддерживает свой собственный стек VC
Не могли бы вы рассказать мне, что значит - (NSArray *) popToRootViewControllerAnimated: (BOOL) анимированный; с передачей как «НЕТ» в анимированном параметре. – Himanshu
@mjdth Вы случайно знаете, что проблема не в том, что «приложение отклоняется Apple»? В противном случае это работает как шарм. Спасибо за ваш совет. –