我已按照说明进行操作 here和 here这表明即使在使用 Storyboard 引用时我也应该能够创建展开/编辑转场。
流程非常简单:
PhotoDetailScene 有一个 Storyboard引用 EditHistoryScene 和一个点击手势来触发 segue,然后我在 EditHistoryScene 上有一个关闭按钮可以放松回到 PhotoDetailScene。现在工作正常(自定义“显示”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()
方法连接到 Storyboard reference(因为这是 IB 允许我的唯一方式ctrl+链接 socket ):
为目标 Storyboard正确设置了 Storyboard引用:
Storyboard引用的退出点连接回 PhotoDetailScene:
EditHistoryScene Storyboard实例似乎没有连接到@IBOutlet?
我最好的猜测是它失败了,因为这是一个 Storyboard 引用,展开转场是在引用上定义的,而不是实际的 Storyboard 实例。但我不知道如何将 EditHistoryScene 的导出点直接附加到 PhotoDetailScene。
最佳答案
您不需要为引用本身创建任何转场。
一旦您的第二个 Storyboard包含对第一个 Storyboard的引用,第一个 Storyboard中定义的任何展开函数都可用。
您可以通过从退出触发器拖动到 View Controller 场景中的退出图标来创建退出转场。
如果您想从“关闭”按钮触发展开,只需按住 ctrl 键并从关闭按钮拖动到其 View Controller 顶部的“退出”图标,您将看到 unwindToPhotoDetailScene
作为一种选择。
如果你想以编程方式触发它,你只需要给 segue 一个标识符。
例如,您可能需要关闭按钮上的操作处理函数来检查是否有未保存的更改。如果有,提示用户确认他们将丢失他们的更改(或保存或其他)。一旦他们愿意继续,您就可以调用放松。
要设置它,按住 Ctrl 键并从 View Controller 对象拖动到它自己的退出图标。创建 unwind segue 并给它一个标识符。
关于ios - 将 "no segue with identifier"与 Storyboard引用一起使用时为 'Unwind Segue',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54754796/