我想将数据(例如set var)从modal segue传递给parent,我该怎么做?
我正在使用该代码退出模态segue:
@IBAction func doneClicked(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
我不能在这里使用segue.destinationViewController
传递数据,因为我习惯于推送segues。
答案 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)
}