pushViewController 时禁用导航栏透明度
Posted
技术标签:
【中文标题】pushViewController 时禁用导航栏透明度【英文标题】:Disable navigation bar transparency while pushViewController 【发布时间】:2018-07-15 12:28:59 【问题描述】:I have TableViewController embed in NavigationController, also I have DetailedViewController that should be opened when cell on in TableViewController is selected.
所以我打电话
navigationController?.pushViewController(DetailedViewController, animated: true)
我的导航栏设置:
navigationController?.navigationBar.isTranslucent = false
navigationController?.navigationBar.barTintColor = .green
DetailedViewController 的导航栏被隐藏
self.navigationController?.isNavigationBarHidden = true
当我看到从 TableViewController 到DetailedViewController 的推送动画时,我可以看到位于TableViewController 后面的Controller 中的一些内容,尽管导航栏对于此转换变得透明。
我能用它做什么?
【问题讨论】:
我不确定您的问题是什么,但我想如果您在推送DetailedVC之前将视图控制器(TableVC)的导航栏设置为隐藏,然后在完成时再次将其设置为隐藏假,你就成功了。 "DetailedViewController 的导航栏被隐藏"。请注意,从概念上讲,UINavigationController 中只有一个导航栏,而不是每个推送的视图控制器一个。单条可以隐藏/取消隐藏。那么在DetailedViewController 中的哪个位置(在哪个方法中)设置isNavigationBarHidden = true? 【参考方案1】:这是编译器未定义的行为,您可以通过以下操作实现您的目标。
1) 选择导航控制器-> 导航栏。 2)取消勾选半透明属性。 (请参阅编辑器窗格)。 3)还从情节提要中隐藏导航栏。 4) 在需要的视图控制器中显示导航栏。
//显示导航栏的代码:
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.navigationController?.navigationBar.isHidden = false
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(true)
self.navigationController?.navigationBar.isHidden = true
【讨论】:
以上是关于pushViewController 时禁用导航栏透明度的主要内容,如果未能解决你的问题,请参考以下文章
如何覆盖 pushViewController 创建的导航栏的功能
pushViewController 为导航栏设置动画,但未显示新视图 [关闭]
pushViewController 后,如何禁用 backBarButtonItem?