在XCode 9.4中,使用Swift 4.1:
在我的主情节提要中,我有一个UITableViewController,它是通过“显示”情节提要启动的,该情节提要来自放置在嵌入了UINavigationController的UIViewController中的UIButton上,该UIViewController设置为初始视图控制器。 (UIViewController具有navigationController?.isNavigationBarHidden = true
,因为我不希望显示UINavigationTitle。)
一切正常。单击UIButton将启动UITableViewController,它具有一个UINavigationItem(左侧带有默认的“ Back”(返回)按钮)。单击表中的任何单元格都可以正确地选择到辅助UIViewController,该UIViewController也具有UINavigationItem和“后退”按钮等。
不幸的是,如果用户开始-但未完成-在UITableViewController上滑动手势,则会导致UITableViewController的UINavigationItem(实际上是视图顶部的整个UINavigation区域)消失,这样可以有效地将用户“捕获”在该屏幕上,而无法返回到初始的UIViewController。
这是UITableViewController的viewDidLoad():
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = false
}
self.title = "Types of Bananas"
navigationController?.isNavigationBarHidden = false
navigationController?.navigationBar.barTintColor = UIColor.brown
navigationController?.navigationBar.tintColor = UIColor.white
}
如果我添加
navigationController?.interactivePopGestureRecognizer?.isEnabled = false
到viewDidLoad(),它可以阻止问题的发生,但也可以防止滑动,我想保留此默认功能。