我对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)