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


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

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

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

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

2 6

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)
}