How to send data back by popViewControllerAnimated for Swift?

后端 未结 4 1023
说谎
说谎 2020-11-29 03:42

I need to send some data back from secondView to First View by popView. How can i send back the data by popViewControllerAnimated?

Thanks!

4条回答
  •  借酒劲吻你
    2020-11-29 03:59

    You can pass data back using delegate

    1. Create protocol in ChildViewController
    2. Create delegate variable in ChildViewController
    3. Extend ChildViewController protocol in MainViewController
    4. Give reference to ChildViewController of MainViewController when navigate
    5. Define delegate Method in MainViewController
    6. Then you can call delegate method from ChildViewController

    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)
    

提交回复
热议问题