У меня есть приложение на основе панели вкладок с навигацией по каждому элементу панели вкладок. Когда я перехожу к другому представлению на любом элементе панели вкладок и нажимаю на элемент панели вкладок, вызывается контроллер корневого представления для этого элемента панели вкладок. Это похоже на PopToRootView. Можем ли мы отключить эту ситуацию?
Отключить панель вкладок для перехода к корневому представлению
Ответы (4)
Да, вы можете отключить автоматический popToRootViewController
, реализовав метод UITabBarControllerDelegate
в вашем контроллере представления:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if(self.navigationController == viewController) {
return NO;
}
return YES;
}
Хотя они говорят, что вы не должны создавать подкласс UINavigationController
, вы можете делать все, что хотите, создав подкласс UINavigationController
и переопределив метод - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
.
Выполнение этого (без вызова super popToRootViewController) предотвратит появление контроллеров представления, когда вы щелкаете элемент панели вкладок. Каким-то образом это могло вызвать у вас проблемы, но, надеюсь, это сработает для вас.
- Включите 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