How to send data back by popViewControllerAnimated for Swift?
I need to send some data back from secondView to First View by popView. How can i send back the data by popViewControllerAnimated?
Thanks!
Solution 1:
You can pass data back using delegate
- Create
protocol
inChildViewController
- Create
delegate
variable inChildViewController
- Extend
ChildViewController
protocol inMainViewController
- Give reference to
ChildViewController
ofMainViewController
whennavigate
- Define
delegate
Method inMainViewController
- Then you can call
delegate
method fromChildViewController
Example
In ChildViewController: Write code below...
protocol ChildViewControllerDelegate
{
func childViewControllerResponse(parameter)
}
class ChildViewController:UIViewController
{
var delegate: ChildViewControllerDelegate?
....
}
In MainViewController
// extend `delegate`
class MainViewController:UIViewController,ChildViewControllerDelegate
{
// Define Delegate Method
func childViewControllerResponse(parameter)
{
.... // self.parameter = parameter
}
}
There are two options:
A) with Segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
let goNext = segue.destinationViewController as ChildViewController
goNext.delegate = self
}
B) without Segue
let goNext = storyboard?.instantiateViewControllerWithIdentifier("childView") as ChildViewController
goNext.delegate = self
self.navigationController?.pushViewController(goNext, animated: true)
Method Call
self.delegate?.childViewControllerResponse(parameter)
Solution 2:
If you want to send data by popping, you'd do something like:
func goToFirstViewController() {
let a = self.navigationController.viewControllers[0] as A
a.data = "data"
self.navigationController.popToRootViewControllerAnimated(true)
}