Я хочу скрыть нижнюю панель вкладок при нажатии новых контроллеров представления в UINavigationController
(я использую панель вкладок по умолчанию). Я делаю это, наследуя UINavigationController
и создаю свой пользовательский контроллер навигации.Как скрыть панель вкладок в моем настраиваемом контроллере навигации?
Я переопределять ниже два функций:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
self.tabBarController.tabBar.hidden = YES;
[super pushViewController:viewController animated:YES];
}
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
NSLog(@"NavigationController: View controller count = %lu", self.viewControllers.count);
if (self.viewControllers.count <= 2) {
self.tabBarController.tabBar.hidden = NO;
}
return [super popViewControllerAnimated:animated];
}
В приложении делегат:
// Use my custom navigation controller
NavigationController *myNav1 = [[NavigationController alloc] initWithRootViewController:myView];
myNav1.navigationBar.translucent = NO;
myNav1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"abc" image:[UIImage imageNamed:@"abc"] selectedImage:[UIImage imageNamed:@"abc"]];
...
self.tabController.viewControllers = [NSArray arrayWithObjects:myNav1, myNav2, myNav3, myNav4, nil];
Проблема:
- При нажатии новых контроллеров вида, нижняя полоса будет скрывает сразу , Я хочу, чтобы он выглядел так, как будто он был нажат с помощью контроллеров представления.
- Когда я пытаюсь вернуться к предыдущему контроллеру представления, используйте жесты, нижняя панель покажет, даже я перестану возвращаться, он не скроется.
Я знаю флаг hidesBottomBarWhenPushed
. Если я использую этот флаг, мне нужно установить его на YES
каждый раз, когда мне нужно нажать контроллер вида. Это немного сложно.
Есть ли способ исправить эти проблемы в моем настраиваемом контроллере навигации?
У Р используя TabBar по умолчанию или пользовательский TabBar? –
@ ravi.p Я использую панель по умолчанию. –
возьмите один объект UINavigationController в делегате приложения и в файле didFinishLaunchingWithOptions назначьте его self.appNavController = (UINavigationController *) self.window.rootViewController; поэтому, когда вы хотите нажать без табуляции, используйте его с делегатом приложения –