将数据从模态segue传递给父级

时间:2015-02-13 15:13:52

标签: ios swift segue

我想将数据(例如set var)从modal segue传递给parent,我该怎么做?

我正在使用该代码退出模态segue:

@IBAction func doneClicked(sender: AnyObject) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

我不能在这里使用segue.destinationViewController传递数据,因为我习惯于推送segues。

2 个答案:

答案 0 :(得分:16)

在Modal ViewController上创建协议

protocol ModalViewControllerDelegate
{
    func sendValue(var value : NSString)
}

同样在Modal ViewController类中声明

var delegate:ModalViewControllerDelegate!

在ParentViewController

中包含此协议ModalViewControllerDelegate

当您将一个viewController移动到另一个

 modalVC.delegate=self;
        self.presentViewController(modalVC, animated: true, completion: nil)

您可以在ParentViewcontroller中获取您的值

 func sendValue(value: NSString) {

    }

最后在ModalViewController上

@IBAction func doneClicked(sender: AnyObject) {
delegate?.sendValue("value")
    self.dismissViewControllerAnimated(true, completion: nil)
}

答案 1 :(得分:-1)

在第二个viewController(由segue显示的那个)声明一个像

这样的变量
var parentVC : UIViewController?

然后从父母那里调用segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "yourSegue" {
        let secondController= segue.destinationViewController as UIViewController
secondController.parentVC = self
    }
}

所以你可以使用

@IBAction func doneClicked(sender: AnyObject) {
    self.parentVC.yourVariable = 0
    self.dismissViewControllerAnimated(true, completion: nil)
}