将数据从模态转场传递给父级
Passing data from modal segue to parent
我想将数据(例如设置变量)从模态转场传递给父级,我该怎么做?
我正在使用该代码退出模式转场:
@IBAction func doneClicked(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
我不能在这里使用 segue.destinationViewController
来传递数据,就像我以前在推送 segues 上所做的那样。
在第二个 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)
}
在 Modal 上创建协议 ViewController
protocol ModalViewControllerDelegate
{
func sendValue(var value : NSString)
}
也在你模态里声明ViewControllerclass
var delegate:ModalViewControllerDelegate!
包含此协议 ModalViewControllerDelegate in ParentViewController
当你从一个 viewController 移动到另一个
modalVC.delegate=self;
self.presentViewController(modalVC, animated: true, completion: nil)
这里你在ParentViewcontroller中得到你的值
func sendValue(value: NSString) {
}
终于在模态ViewController
@IBAction func doneClicked(sender: AnyObject) {
delegate?.sendValue("value")
self.dismissViewControllerAnimated(true, completion: nil)
}
我想将数据(例如设置变量)从模态转场传递给父级,我该怎么做?
我正在使用该代码退出模式转场:
@IBAction func doneClicked(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
我不能在这里使用 segue.destinationViewController
来传递数据,就像我以前在推送 segues 上所做的那样。
在第二个 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)
}
在 Modal 上创建协议 ViewController
protocol ModalViewControllerDelegate
{
func sendValue(var value : NSString)
}
也在你模态里声明ViewControllerclass
var delegate:ModalViewControllerDelegate!
包含此协议 ModalViewControllerDelegate in ParentViewController
当你从一个 viewController 移动到另一个
modalVC.delegate=self;
self.presentViewController(modalVC, animated: true, completion: nil)
这里你在ParentViewcontroller中得到你的值
func sendValue(value: NSString) {
}
终于在模态ViewController
@IBAction func doneClicked(sender: AnyObject) {
delegate?.sendValue("value")
self.dismissViewControllerAnimated(true, completion: nil)
}