为什么在恢复应用程序时不能保留导航堆栈?

所以按照我的post在这里: 为什么在状态恢复后改变我的应用程序的方向解散我的父视图控制器? 我与另一个用户进行了讨论,我们得出结论,这个问题与我的导航堆栈没有被恢复有关。

从这篇文章总结 – 我可以成功地从我恢复的VC模式呈现控制器,但是,当我旋转设备的方向,以显示模式提供的视图控制器之一,然后继续closures该控制器,应用程序不会回到恢复控制器。 如果我不旋转屏幕,它按预期工作。

我所有的控制器正在通过故事板中的赛段实例化。 所有的场景在其各自的故事板中被赋予了恢复标识符。 我正在恢复的VC正在成功恢复,但不再是导航堆栈的一部分(导航控制器出来是零)。

这里是我的应用程序的stream程,导致我正在恢复的最后一个场景,其中SWRevealController是我用于我们的应用程序边栏的库:

  1. Main.Storyboard – TempScreen(UIViewController)
  2. Navigation.Storyboard – SWRevealViewController
  3. Navigation.Storyboard – MenuTableViewController(SWRevealController的后视图)
  4. Navigation.Storyboard – Storyboard对MyPlaces的引用(SWRevealController的前视图)
  5. MyPlaces.storyboard – 地点,初始视图控制器
  6. MyPlaces.storyboard – 放置详细信息
  7. MyPlaces.storyboard – Storyboard对交互的引用
  8. Interaction.storyboard – CreateInteraction(这是正在恢复的地方,我有问题)

正如你所看到的,有很多步骤可以到达我正在恢复的场景。 我正在恢复的场景是通过Pushbutton从button按下来达到的。

当在AppDelegateviewControllerWithRestorationIdentifierPath方法中打印出identifierComponents viewControllerWithRestorationIdentifierPath ,我发现了一些有趣的东西。 这是每个迭代打印的内容:

  1. TempScreen
  2. TempScreen,导航(SWRevealController的后视图)
  3. TempScreen,导航,menuTableViewController
  4. TempScreen,Navigation,MyPlacesNavController(MyPlaces.storyboard的init导航控制器)
  5. TempScreen,Navigation,MyPlacesNavController,Places(VC)
  6. TempScreen,Navigation,MyPlacesNavController,Places(VC),PlaceDetail
  7. TempScreen,导航,MyPlacesNavController,交互<—发生了什么地方和PlaceDetail?