iOS 关闭了一连串的 ViewControllers



我对iOS中的以下行为感到有些困惑(目标是Xcode 7.3.1中装有iOS 9.3的iPad)。我有以下层次结构:

Storyboard1
|
| initial
|
A (UIViewController)
|
| UIStoryboardSegue Present Modally
|
B (UINavigationController)
|
| root
|
C (UIViewController)
|
| presentViewController
|
Storyboard2
|
| initial
|
D (UIViewController)
|
| UIStoryboardSegue Present Modally
|
E (UIViewController) here

E完成时,我想回到A,所以我考虑在C中使用self.navigationController?.dismissViewControllerAnimated(true, nil),我通过保留对C的弱引用从E调用它,但这让我回到C而不是A。如果我想回到A我必须发出两次相同的关闭命令。我错过了什么?

Wolfy,

只需打电话,

UIApplication.sharedApplication().keyWindow?.rootViewController?.dismissViewControllerAnimated(true, completion: nil)

工作原理

UIApplication.sharedApplication().keyWindow?.rootViewController will return `A (UIViewController)` 

由于视图控制器已模态地呈现B (UINavigationController)并且所有其他视图控制器都加载在此导航堆栈中,因此B (UINavigationController)将为您卸载所有视图控制器:)

快乐的编码:)

要关闭多个模态,您可以这样做:

A.dismissViewControllerAnimated(true,nil)

最新更新