使用展开向后传递数据到 segue

与 segue 相比,它允许你从当前视图控制器向前传递数据到目标视图控制器:

(VC1) - > (VC2)

使用展开可以执行相反的操作,将数据从目标或当前视图控制器传递到其呈现的视图控制器:

(VC1) < - (VC2)

注意 :请注意,使用展开可以先传递数据,然后将取消分配当前视图控制器(VC2)。

这是怎么做的:

首先,你需要在呈现视图控制器(VC1)上添加以下声明,VC1 是我们要将数据传递到的视图控制器:

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)

重要的是使用前缀 unwind,这通知Xcode 这是一个展开方法,让你可以选择在故事板中使用它。

之后你将需要实现该方法,它看起来几乎与实际的 segue 相同:

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)
{
    if segue.identifier == "YourCustomIdentifer"
    {
        if let VC2 = segue.sourceViewController as? VC2
        {
            //    Your custom code in here to access VC2 class member
        }

现在你有 2 个选项来调用展开调用:

  1. 你可以通过硬编码调用:self.performSegueWithIdentifier("YourCustomIdentifier", sender: self),只要你愿意,它就会为你放松。
  2. 你可以使用 storyboard 将 unwind 方法链接到 Exit 对象:ctrl +将要调用 unwind 方法的按钮拖动到 Exit 对象:

StackOverflow 文档

发布,你可以选择自定义展开方法:

StackOverflow 文档