0
我想隱藏底部的標籤欄時,推動新的視圖控制器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
。這有點複雜。
有沒有辦法在我的自定義導航控制器中解決這些問題?
ü[R使用默認的TabBar或定製的TabBar? –
@ ravi.p我使用默認的tabbar。 –
在應用程序委託中取一個UINavigationController對象,並在didFinishLaunchingWithOptions中爲其分配self.appNavController =(UINavigationController *)self.window.rootViewController;所以當你想推動沒有tabbar使用它與應用程序代理 –