Передача данных от модального сегмента к родительскому
Я хочу передать данные (например, set var) из модального сегмента в родительский, как я могу это сделать?
Я использую этот код для выхода из модального сегмента:
@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) }