【问题标题】:iOS - Cannot hide navigation bar on first pageiOS - 无法在第一页隐藏导航栏
【发布时间】:2019-01-31 13:41:26
【问题描述】:
我在像这样的标签栏控制器之后有一个导航控制器
我想隐藏第一页的导航栏,但打开应用程序仍然不会隐藏。
我做了以下事情:
- 取消选中导航控制器上的“显示导航栏”
- 在第一页ViewController的“viewWillAppear”下添加这段代码:
[[self navigationController] setNavigationBarHidden:YES 动画:YES];
当我点击后退按钮时,它会显示我的启动画面页面,如果我下一步它会转到首页但导航栏是隐藏的。
这是我打开应用程序时的页面
这是当我点击返回并转到同一页面时
你知道我错过了什么从一开始就隐藏了导航栏。
【问题讨论】:
标签:
ios
objective-c
uinavigationcontroller
uinavigationbar
【解决方案1】:
首先,我会去解决你的问题。然后我会说明UINavigationController。
所以你使用SB在Main.storyboard中创建了一些viewControllers。这些viewControllers必须继承UITabBarController、UINavigationController或ViewController。
我看你的截图是对的,不然你的截图不清楚。
如果你想编辑或布局视图,你需要创建ViewController并将这个ViewController与Main.storyBoard匹配。我将测试这些操作。你会的。
然后这些 ViewController 继承匹配 ViewController。
HomeTabBarViewController
FirstViewController
SecondViewController
如上所述,非常清楚。如果你想在第一页隐藏navigationBar,你必须在FirstViewController中手写代码。同样你在viewWillAppear:中操作
self.navigationController.navigationBar.hidden = YES;
就是这样。
如果你手写代码隐藏在HomeTabBarViewController中的navigationBar继承UITabBarController,因为navigationController是下一个ViewController,在隐藏代码中不起作用。
所以 UINavigationController 有自动创建导航栏。你不想显示这个导航栏来使用 viewWillAppear 中的隐藏导航栏。而且你想隐藏这个页面和下一页显示,你可以把这个 viewWillAppear 隐藏,viewWillDisAppear 显示。
希望能帮您解决问题。
【解决方案2】:
你可以这样做。
localNavigationController = [[UINavigationController alloc] initWithRootViewController:theViewController];
[localNavigationController setNavigationBarHidden:YES animated:YES];