解雇后iOS Popover不会消失

时间:2018-12-31 05:48:14

标签: ios swift uiviewcontroller popover uipopovercontroller

我们有一个视图控制器,当单击它时会显示来自UIBarButtonItem的弹出窗口。弹出窗口显示得很好,但是当我们单击弹出窗口内的“取消”按钮(调用dismiss(_:completion:)或在弹出窗口外点击时,弹出窗口会消失。但是,显示弹出窗口的视图控制器内部的所有内容均不可单击。当我们检查视图层次结构时,我们可以看到弹出窗口及其UITrasitionView仍在窗口中,并且正在阻塞视图控制器,即使在模拟器中该弹出窗口不再可见。可能是什么原因?

我们已经正确设置了弹出框控制器的buttonBarItem,并且其显示正确。只是在问题被解决时才被驳回。

代码看起来像这样:

let controller = SettingsController() // the settings controller
controller.popoverPresentationController?.barButtonItem = sender // the UIBarButtonItem
self.present(controller, animated: true, completion: nil)

即使我们将SettingsController替换为普通的UIViewController,也没有任何改变。

P.S。呈现视图控制器的该视图控制器使用自定义过渡,但是在检查了带有断点的代码之后,我们认为这不是自定义过渡委托不参与呈现/关闭弹出窗口的原因。

2 个答案:

答案 0 :(得分:1)

打开视图

let vc = SettingsController()
vc.modalPresentationStyle = .overCurrentContext
let nav = UINavigationController(rootViewController: vc)
self.present(nav, animated: true, completion: nil)

关闭视图

self.dismiss(animated: true, completion: nil)

答案 1 :(得分:0)

自我ViewController是否嵌入在导航控制器中?如果是这样,请尝试 self.navigationController.present(controller, animated: true, completion: nil)