将数据传输回根ViewController

时间:2017-11-29 18:32:40

标签: ios swift uinavigationcontroller

在我的iOS应用中,用户使用导航控制器进行导航。 用户使用不同的UITableViewController进行导航。

UIViewController - UITableViewController - UITableViewController

用户在" last"中选择了一个项目后UITableViewController我使用以下调用返回到根视图控制器:

DispatchQueue.main.async { self.navigationController?.popToRootViewController(animated: true) }

如何将数据发送回根控制器?以前我使用过通知,但我真的不喜欢这个概念。有更优雅的方式吗? 如果视图堆栈上的每个UIViewController都应该实现自己的回调,该回调使用

进行初始化
func prepare(for segue: UIStoryboardSegue, sender: Any?)

方法

如何优雅地实施?

1 个答案:

答案 0 :(得分:1)

如果您正在使用segues,则可以创建一个展开segue并使用它而不是popToRootViewController。 Here您可以看到如何创建展开segue。

否则,根据您的层次结构,在popToRootViewController之前,您可以像这样访问您的视图控制器:

if let rootVC = navigationController?.viewControllers.first as? YourViewControllerClass {
    rootVC.someProperty = dataToPass
}
navigationController?.popToRootViewController(animated: true)