考虑三个不同的控制器A、B和C,其中A是导航控制器中的初始控制器。
现在我推到B,然后推到C。
A --> B --> C
然后我想从C转到A。我怎么能用一次推和动画就到那里。我想方法是从导航堆栈中找到控制器A并调用
popToController
方法。如果有其他更好的方法,请告诉我。现在主要的问题是如何传递
C --> A
中的数据。如果是从
B --> A
来的,我可以用这个授权。但是对于C --> A
可以做什么来使用委派?我确实有使用观察者,单例,反应模式的解决方法。但我想知道有没有更好的方法。
最佳答案
您可以有多种方法来实现此功能。
一次就可以把你的风投从名单上抽出来。
let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
for aViewController in viewControllers {
if let controllerA = aViewController as? AViewController) {
controllerA.data = self.data
self.navigationController?.popToViewController(controllerA, animated: true);
}
}
你也可能对unwind segue感兴趣。Here也是一个很好的例子。