iOS 使用展开来向后传递数据

示例

与segue相比,segue允许您将数据从当前视图控制器“转发”到目标视图控制器:

(VC1)->(VC2)

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

(VC1)<-(VC2)

注意:请注意,使用展开功能可让您先传递数据,然后再传递当前的视图控制器(VC2)。

方法如下:

首先,您需要在当前的视图控制器(VC1)处添加以下声明,这是我们要将数据传递到的视图控制器:

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)

重要的是使用前缀unwind,此“通知” Xcode这是一种展开方法,您也可以选择在情节提要中使用它。

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

@IBAction func unwindToPresentingViewController(segue:UIStoryboardSegue)
{
    ifsegue.identifier== "YourCustomIdentifer"
    {
        if let VC2 =segue.sourceViewControlleras? VC2
        {
            //    您的自定义代码在这里访问VC2类成员
        }

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

  1. 您可以“硬编码”调用:self.performSegueWithIdentifier("YourCustomIdentifier", sender: self),它会在您需要时为您解散performSegueWithIdentifier。

  2. 您可以使用将该取消链接方法链接storyboard到您的“退出”对象:ctrl +拖动要调用该取消链接方法的按钮,将其链接到“退出”对象:

释放,您将可以选择自定义展开方法: