将数据从模态转场传递给父级

Passing data from modal segue to parent

我想将数据(例如设置变量)从模态转场传递给父级,我该怎么做?

我正在使用该代码退出模式转场:

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

我不能在这里使用 segue.destinationViewController 来传递数据,就像我以前在推送 segues 上所做的那样。

在第二个 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)
}

在 Modal 上创建协议 ViewController

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

也在你模态里声明ViewControllerclass

var delegate:ModalViewControllerDelegate!

包含此协议 ModalViewControllerDelegate in ParentViewController

当你从一个 viewController 移动到另一个

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

这里你在ParentViewcontroller中得到你的值

 func sendValue(value: NSString) {

    }

终于在模态ViewController

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