点击时从导航控制器堆栈查看弹出窗口

时间:2020-09-16 15:33:55

标签: ios swift ios13

我有一个弹出视图,只是一个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。它对我不起作用。

1 个答案:

答案 0 :(得分:1)

正在回答,根据OP的评论...

正确的方法是让您的“ popover”控制器告诉 presenting 控制器将新的VC推送到导航堆栈中。

这可以通过几种不同的方式来完成,但最常见的方式是使用协议/委托模式或使用闭包。