如何通过popViewControllerAnimated为Swift发回数据?

Var*_*kul 27 ios swift

我需要通过popView将一些数据从secondView发送回First View.我如何通过popViewControllerAnimated发回数据?

谢谢!

iDh*_*val 70

您可以使用返回数据 delegate

  1. 创建protocolChildViewController
  2. 在中创建delegate变量ChildViewController
  3. 扩展ChildViewController协议MainViewController
  4. ChildViewController提供MainViewController何时参考navigate
  5. 定义delegate方法MainViewController
  6. 然后你可以调用delegate方法ChildViewController

在ChildViewController中:写下面的代码......

protocol ChildViewControllerDelegate
{
     func childViewControllerResponse(parameter)
}

class ChildViewController:UIViewController
{
    var delegate: ChildViewControllerDelegate?
    ....
}
Run Code Online (Sandbox Code Playgroud)

在MainViewController中

// extend `delegate`
class MainViewController:UIViewController,ChildViewControllerDelegate
{
    // Define Delegate Method
    func childViewControllerResponse(parameter)
    {
       .... // self.parameter = parameter
    }
}
Run Code Online (Sandbox Code Playgroud)

有两种选择:

A)与Segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
   let goNext = segue.destinationViewController as ChildViewController
   goNext.delegate = self
}
Run Code Online (Sandbox Code Playgroud)

B)没有塞格

let goNext = storyboard?.instantiateViewControllerWithIdentifier("childView") as ChildViewController
goNext.delegate = self
self.navigationController?.pushViewController(goNext, animated: true)
Run Code Online (Sandbox Code Playgroud)

方法调用

self.delegate?.childViewControllerResponse(parameter)
Run Code Online (Sandbox Code Playgroud)


小智 17

如果你想通过弹出发送数据,你可以这样做:

func goToFirstViewController() {
  let a = self.navigationController.viewControllers[0] as A
  a.data = "data"
  self.navigationController.popToRootViewControllerAnimated(true)
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该为此目的使用委托 (2认同)