为什么在状态恢复后更改我的应用程序的方向会解雇我的父视图控制器?

时间:2017-07-09 18:19:55

标签: ios swift

我有视图控制器A,它可以模态地呈现视图控制器B或视图控制器C,这是我们用来捕获签名的屏幕。在视图控制器C中,我使用以下代码将屏幕旋转为横向:

appDel.shouldRotate = true
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()

我在app appate中使用

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return shouldRotate ? .landscape : .portrait
}

通常情况下,我可以毫无问题地解除视图控制器C.但是,如果我恢复应用程序状态并显示视图控制器A并显示视图控制器C然后继续关闭C,应用程序返回到我们的应用程序的主屏幕(初始屏幕),而不是解雇回答A.奇怪的事情是我可以在没有出现此问题的情况下呈现和解除视图控制器B.

我已经注释掉了我的屏幕旋转逻辑,我可以毫无问题地解除视图控制器C.

那么,为什么更改屏幕的方向会阻止我在解除C后返回查看控制器A?

1 个答案:

答案 0 :(得分:0)

感谢我与murphguy的讨论,我得出结论,这是由于应用程序恢复时导航堆栈没有恢复。遗憾的是,在导航控制器中嵌入VC C并没有解决问题。为什么恢复时VC A的navigationController,我不知道。但是,我在Why isn't my navigation stack being preserved upon restoring the app?处提出了一个新问题。