视图控制器设置如下:
UITabBarController
- Tab 1
- UINavigationController
- UITableViewController
- select row pushes UIViewController (self.navigationController pushViewController)
- select button pushes another UIViewController
- Tab 2
- UIViewcontroller
我的AppDelegate
应该反映出上面的设置,并且看起来像这样:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
UITabBarController* tabBarController = [[UITabBarController alloc] init];
UITableViewController* myListController = [[MyListController alloc] init];
myListController.hidesBottomBarWhenPushed = YES;
UINavigationController* navigationControllerMyList = [[UINavigationController alloc] initWithRootViewController:myListController];
navigationControllerMyList.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0];
UIViewController* simpleViewController = [[SimpleViewController alloc] init];
simpleViewController.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:0];
tabBarController.viewControllers = @[ navigationControllerMyList , simpleViewController ];
self.window = [[UIWindow alloc] init];
self.window.rootViewController = tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
我面临的问题是,一旦我在表视图控制器中选择了一行,通过设置myListController.hidesBottomBarWhenPushed = YES;
在UINavigationController
上,向后导航,选项卡栏不再显示,但我希望再次显示。但前提是我是导航控制器的根。
我尝试在tabBar.hidden
中将NO
设置为UITableViewController
,但是一旦导航回去,tabBar始终可见。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.tabBarController.tabBar.hidden = NO;
}
我也看到了this的答案,基本上说我必须自己管理每个视图控制器中的选项卡。我尽量避免这种情况。
要正确隐藏和显示仅在导航控制器根目录下的标签栏,我会错过什么?
答案 0 :(得分:0)
在将任何VC推入导航控制器之前,只需添加一行NavigationController?.hideBottomBarWhenPushed = true
请勿复制粘贴,可能会出现语法错误,请尝试输入xcode会给出建议。