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

View pops from navigation controller stack when tapped

我有一个弹出视图,它只是一堆 UIButton。

弹出窗口是从视图控制器 (Records) 呈现的,它本身位于 NavigationController 中。

我需要弹出视图中的按钮能够将其他视图推送到导航堆栈的顶部。 以下是我如何在 Records 视图控制器中为弹出框准备 segue:

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)

这个 kina 有效,编辑器视图显示了一个导航栏和所有内容,但只要我点击视图或尝试滚动,它就会被关闭。

我怎样才能防止被解雇?我确实尝试设置 isModalInPresentation。它对我不起作用。

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

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

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