"no segue with identifier" 将 'Unwind Segue' 与故事板参考一起使用时

"no segue with identifier" when using 'Unwind Segue' with a storyboard reference

我已按照说明 here and 进行操作,这表明我应该能够创建一个 unwind/edit segue,即使在使用情节提要参考时也是如此。

流程很简单:

PhotoDetailScene 有一个故事板参考 EditHistoryScene 和一个点击手势来触发 segue,然后我有一个关闭按钮 EditHistoryScene 展开回到 PhotoDetailScene。现在工作正常(自定义 'show' segue 打开 EditHistoryScene),如果我使用 dismiss() 调用它会很好地关闭。但是使用 segue 标识符展开总是失败:

EditHistoryScene has no segue with identifier 'UnwindEditHistorySegue'

在我的 EditHistoryScene 关闭按钮操作中,我有:

func closeButtonPressed(_ sender: Any) 
    performSegue(withIdentifier: "UnwindEditHistorySegue", sender: self)
}

并且在我的 PhotoDetailScene 中,我添加了:

@IBAction func unwindToPhotoDetailScene(_ unwindSegue: UIStoryboardSegue) {
    print("It works!")
}

这就是我在 IB 中设置它的方式,unwindToPhotoDetailScene() 方法连接到情节提要 reference(因为这是 IB 允许我的唯一方式ctrl+link出线):

呈现转场:

展开转场属性(和转场名称)

为目标故事板正确设置的故事板参考:

故事板引用的退出点连接回 PhotoDetailScene:

EditHistoryScene 故事板实例似乎未连接到 @IBOutlet?

我最好的猜测是它失败了,因为这是一个故事板参考,展开转场是在 参考 上定义的,而不是实际的故事板实例。但是我不知道如何将 EditHistoryScene 的出口点直接附加到 PhotoDetailScene。

您不需要为引用本身创建任何转场。

一旦您的第二个故事板包含对第一个故事板的引用,第一个故事板中定义的任何展开函数都可用。

您可以通过从退出触发器拖动到视图控制器场景中的退出图标来创建退出转场。

如果您想从 "close" 按钮触发展开,只需按住 ctrl 键并从关闭按钮拖动到其视图控制器顶部的 "exit" 图标,您将看到 unwindToPhotoDetailScene 作为一个选项。

如果你想以编程方式触发它,你只需要给 segue 一个标识符。

例如,您可能需要关闭按钮上的操作处理函数来检查是否有未保存的更改。如果有,提示用户确认他们将丢失他们的更改(或保存或其他)。一旦他们愿意继续,您就可以调用放松。

要进行设置,按住 Ctrl 键并从视图控制器对象拖动到它自己的退出图标。创建 unwind segue 并给它一个标识符。