Передача данных из модального сегмента в родительский

Я хочу передать данные (например, set var) из модального сегмента в родительский, как я могу это сделать?

Я использую этот код для выхода из модального segue:

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

Я не могу использовать segue.destinationViewController здесь, чтобы передать данные, как я привык делать на push-сегментах.

2 ответов


создать протокол на модальном ViewController

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

также объявите в Вас модальный класс ViewController

var delegate:ModalViewControllerDelegate!

включить этот протокол ModalViewControllerDelegate в ParentViewController

при перемещении формы одного 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)
}

во втором 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)
}