【发布时间】:2021-09-14 11:46:57
【问题描述】:
我对一个 NSViewController 的 segue 和解雇它感到困惑。
在我的 StoryBoard 中,我有一个从 ViewController 到 BlockViewController 的 segue 设置为带有 showBlockVC 标识符的工作表
这是通过单击按钮触发的 segue 代码:
@IBAction func addBlock(_ sender: Any) {
performSegue(withIdentifier: "showBlockVC", sender: sender)
}
在 BlockViewController 中,我有一个取消按钮,单击它只会关闭 VC:
@IBAction func cancelBlock(_ sender: Any) {
self.dismiss(self)
}
这在某种程度上有效,BVC 动画消失并且 ViewControlleer 呈现在屏幕上。 (虽然我不确定它是否曾经被删除或只是留在 BVC 下)
我的问题是我需要 VC(根)才能知道 BVC 已被驳回。但是Apple,我不知道什么时候,自从我完成桌面工作以来已经有一段时间了,从dismiss() 中删除了完成处理程序。即使我想在 VC 上调用一个函数,当我将 parent 打印到 BVC 的 viewDidLoad 的日志中时,我会得到 nil。为什么 BVC 不将 VC 视为其父级?
在 VC 中,如果我从 viewWillAppear 或 viewDidAppear 打印到日志,它们只会在 VC 的初始负载上打印。
我确定我接线有误,但我似乎无法弄清楚。任何帮助将不胜感激。
编辑:忘了补充,我正在通过使用通知来解决这个问题,在 BVC 上的 viewWillDisappear 中,我发送了一个通知并在 VC 中设置了一个观察者,但这似乎有点 hacky...
【问题讨论】:
标签: swift macos segue nsviewcontroller