我的应用程序中有多个视图控制器。我想隐藏navigationbar
在我的第一个视图控制器中。所以我用下面的代码来隐藏导航栏
navigationController?.setNavigationBarHidden(navigationController?.navigationBarHidden == false, animated: true);
现在,我想在其他viewController中添加导航栏,但是,我的导航栏在该viewcontroller中不可见。为什么会这样呢?
我的故事板显示了导航栏,但是一旦我尝试运行我的应用程序,它便消失了。
如果我从一个视图控制器中隐藏导航栏,那么我们将无法使用导航控制器,是吗?我希望我错了。那么,导航栏不显示的原因是什么?
编辑:
另外,我只希望我的视图控制器处于纵向模式。因此,我做了以下工作,这是导致问题的原因吗?
extension UINavigationController{
public override func shouldAutorotate() -> Bool {
if (UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft ||
UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeRight ||
UIDevice.currentDevice().orientation == UIDeviceOrientation.Unknown) {
return false
}
else {
return true
}
}
public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [UIInterfaceOrientationMask.Portrait ,UIInterfaceOrientationMask.PortraitUpsideDown]
}
}
编辑1:
我正在使用以下代码从一个视图控制器移动而不是从故事板链接。现在是引起问题的吗?
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewControllerWithIdentifier("HomeVC")
presentViewController(secondViewController, animated: false, completion: nil)
编辑2:
请检查以下屏幕截图。我对secondview控制器的设置是什么
编辑3:
导航控制器是一个控制器,它具有视图控制器堆栈。因此,如果您有这样的事情:
资产净值-> A->(segue)B
即使您将隐藏导航栏,您仍然应该能够进行搜索。您还不能只取消隐藏viewWillAppear中第二个(B)视图控制器中的导航栏吗?首先,以相同的方式将其隐藏在viewWillAppear上。
编辑:问题的最终解决方案:使用:
let controller = storyboard.instantiateViewControllerWithIdentifier("HomeVC")
self.navigationController!.pushViewController(controller)
代替:
let secondViewController = storyboard.instantiateViewControllerWithIdentifier("HomeVC")
presentViewController(secondViewController, animated: false, completion: nil)
因为pushViewController会将secondViewController添加到其堆栈中。presentViewController正在替换您的导航控制器,这就是为什么您看不到导航栏的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句