我有
NAVIGATIONController A -> ViewController A -> ViewController B
|
| (modal)
|
\ /
'
NAVIGATIONController B -> ViewController C
如何从C转回ViewController A?
当我在ViewController C中时,我尝试打印不同的控制器值:
print(self.navigationController) //NAVIGATIONController B
print(self.navigationController?.presentingViewController) //UINavigationController (not sure what this is? It is not one of my classes)
print(self.navigationController?.presentedViewController) //nil
print(self.presentingViewController) //The same UINavigationController (still not sure...)
print(self.presentedViewController) //nil
我知道如何从MyViewController C返回MyViewController B,使用此行self.navigationController?.dismissViewControllerAnimated(true, nil)
,但我要求从C转到A: - )
我怎样才能访问NAVIGATIONController B之前的内容?
答案 0 :(得分:3)
来自UINavigationController
的{{1}}应该是您的“NAVIGATIONController A”。
你应该可以从C做的是获得带有self.navigationController?.presentingViewController
的“NAVIGATIONController A”并调用self.navigationController?.presentingViewController
(做这个没有动画)。
然后使用popToRootViewController
解除“ViewController C”(及其导航控制器)。
这样,当“ViewController C”被解除时,顶级导航控制器已经显示“ViewController A”。
答案 1 :(得分:0)
您可以使用popToViewController。
[self.navigationController popToViewController:yourviewcontroller animated:YES];
这将弹出viewcontrollers,直到它到达yourviewcontroller。 希望这会有所帮助。
答案 2 :(得分:0)
在BScene的viewDidLoad中:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.noti), name: "popAndDismiss", object: nil)
}
func noti() {
navigationController?.popViewControllerAnimated(true)
}
在CScene的buttonAction中:
@IBAction func click(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("popAndDismiss", object: nil, userInfo: nil)
navigationController?.dismissViewControllerAnimated(true, completion: nil)
}