我有下面的代码来隐藏和显示导航栏。它在第一个 View 加载时隐藏,然后在调用“ child ”时隐藏。问题是当他们回到 Root View 时,我找不到触发它再次隐藏的事件/ Action ....
我在根页面上有一个手动执行操作的“测试”按钮,但它并不漂亮,我希望它是自动的。
-(void)hideBar
{
self.navController.navigationBarHidden = YES;
}
-(void)showBar
{
self.navController.navigationBarHidden = NO;
}
最佳答案
我找到的最好的解决方案是在第一个 View Controller 中执行以下操作。
objective-C
- (void)viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
}
swift
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.setNavigationBarHidden(true, animated: animated)
super.viewWillAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
self.navigationController?.setNavigationBarHidden(false, animated: animated)
super.viewWillDisappear(animated)
}
当您将下一个 UIViewController
插入堆栈时,这将导致导航栏从左侧开始动画(与下一个 View 一起),并向左动画(与旧 View 一起) View ),当您按下 UINavigationBar
上的后退按钮时。
另请注意,这些不是委托(delegate)方法,您正在覆盖 UIViewController
对这些方法的实现,并且根据文档,您必须在实现中的某处调用 super 的实现.
关于ios - iPhone仅在第一页隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845583/