与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个选项来调用展开调用:
您可以“硬编码”调用:self.performSegueWithIdentifier("YourCustomIdentifier", sender: self),它会在您需要时为您解散performSegueWithIdentifier。
您可以使用将该取消链接方法链接storyboard到您的“退出”对象:ctrl +拖动要调用该取消链接方法的按钮,将其链接到“退出”对象:
释放,您将可以选择自定义展开方法: