ios - iOS 仅在 NavigationController 根目录上显示标签栏
问题描述
视图控制器设置如下所示:
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;
}
我也看到了这个答案,它基本上说我必须自己管理每个视图控制器中的标签栏。我尽量避免这种情况。
我错过了什么才能正确隐藏和仅在导航控制器根目录显示标签栏?
解决方案
在将任何 VC 推入导航控制器之前,只需添加一行 navigationController?.hideBottomBarWhenPushed = true
不要复制粘贴可能有语法错误,尝试输入 xcode 会给出建议。
推荐阅读
- android - 如何将从 Home 小部件获取的数据传递给它的子小部件?
- java - java - 在派生构造函数中调用超级构造函数是否与设置字段值完全相同?
- sql-server - 是否可以将 azure 托管 sql 服务数据库复制到本地实例中
- amazon-web-services - 使用预签名 URL“SignatureDoesNotMatch”获取 AWS S3 对象
- android - 协调器布局“layout_behavior”在所有底部选项卡上隐藏底部导航栏
- python - 如何在postgresql中将空显示为null
- c# - CKFinder ConnectorBuilder 在启动 asp.net mvc Web 应用程序时引发泛型类型定义异常
- python - 我如何只从 PRAW 中获取图片
- java - java.util.List 上的 get(0) 是否总是 O(1)?
- reactjs - 用户授权后如何在所有子组件之间传递状态?