为什么在状态恢复后改变我的应用程序的方向来取消我的父视图控制器?

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

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

在我使用的应用程序委托中

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

通常情况下,我可以解除视图控制器C没有任何问题。 但是,如果我恢复应用程序状态并显示视图控制器A和当前视图控制器C然后继续解除C,则应用程序返回到我们的应用程序的主屏幕(初始屏幕),而不是解散回A.奇怪的事情是我可以提出和解雇视图控制器B没有发生这个问题。

我已经评论了我的屏幕旋转逻辑,我可以解雇视图控制器C没有任何问题。

那么为什么改变屏幕的方向会阻止我在解散C之后回到视图控制器A?

感谢我与murphguy的讨论,我得出这样的结论:这是由于应用程序恢复导航堆栈没有被恢复。 在导航控制器中embeddedVC C,不幸的是,并没有解决这个问题。 为什么VC的A的navigationController控制器恢复后,我不知道。 然而,我提出了一个新的问题, 为什么不是我的导航堆栈被保存在恢复应用程序? 。