将数据从模态传递给父项
我想从模态传递数据(例如设置var)到父母,我该怎么做?
我正在使用该代码退出模态segue:
@IBAction func doneClicked(sender: AnyObject) { self.dismissViewControllerAnimated(true, completion: nil) }
我不能在这里使用segue.destinationViewController
来传递数据,因为我曾经在push segues上做过。
在Modal ViewController上创build协议
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) }
在第二个viewController(由segue显示的)声明一个variables
var parentVC : UIViewController?
那么当你从家长调用赛格
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) }