我有一个弹出视图,只是一个UIButton的堆栈。
弹出式窗口是从本身位于NavigationController中的视图控制器(记录)呈现的。
我需要弹出视图中的按钮才能将其他视图推入导航堆栈的顶部。 这是我在“记录”视图控制器中为弹出窗口准备序列的方法:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popoverSegue" {
let dest = segue.destination as! PopoverViewController
dest.navController = navigationController
dest.modalPresentationStyle = .popover
dest.popoverPresentationController?.barButtonItem = addButton
dest.popoverPresentationController?.delegate = self
}
}
然后在popoverViewController内部,我得到了一堆IBAction函数,需要在上面设置的navController
上推送其他视图。
let editor = EditorViewController(nibName: "EditorViewController", bundle: nil)
navController?.pushViewController(editor, animated: true)
此链接起作用,编辑器视图随即显示导航栏和所有内容,但是一旦我点击视图或尝试滚动,它就会被关闭。
如何防止这种不愉快的事情?我确实尝试设置isModalInPresentation
。它对我不起作用。
答案 0 :(得分:1)
正在回答,根据OP的评论...
正确的方法是让您的“ popover”控制器告诉 presenting 控制器将新的VC推送到导航堆栈中。
这可以通过几种不同的方式来完成,但最常见的方式是使用协议/委托模式或使用闭包。