为啥要恢复中间视图控制器?

Posted

技术标签:

【中文标题】为啥要恢复中间视图控制器?【英文标题】:Why intermediate view controllers getting restored?为什么要恢复中间视图控制器? 【发布时间】:2016-10-25 06:56:27 【问题描述】:

我正在为我的应用程序使用状态恢复。 我有 vc1 -> vc2 -> vc3。

在 vc3 上,我实现了恢复委托和恢复标识符。但是在 vc1 和 v2 上,我只实现了标识符。

当我到达 vc3 时,它会恢复正常。 但是当我到达 vc2 时,它也会恢复。它只设置了恢复标识符。中间视图控制器是否也得到恢复?我不想要。

【问题讨论】:

【参考方案1】:

基本上,UIKit 会恢复设置了重用标识符的视图控制器(包括它们的子视图)。在您的情况下,您已经设置了所有三个视图控制器的标识符。因此,即使您只为 vc3 实现了 UIStateRestoration 方法,您的所有 VC 也会得到恢复。

您可以尝试单独删除 vc2 的 ReuseID 并运行您的应用,使用完整的 vc3 方法及其重用 ID。由于您的 vc2 没有重用 id,因此 UIKit 不会关心恢复它。删除 vc2 的重用 id 时可能的结果是以下之一:

1. vc3会被恢复,当你按下它的返回键时,你会直接进入vc1

2。只有你的 vc1 会被恢复

【讨论】:

以上是关于为啥要恢复中间视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在 TableView 中间加载单元格。为啥?

为啥 swift uiview 不会连接到视图控制器?

为啥要更改选项卡,停止 ios 应用程序中的动画?

硬盘显示操作无法完成,因为磁盘管理控制台视图不是最新状态要怎么寻回数据

iOS:为啥我的子视图在滚动视图中出现大间距

如何使用状态恢复来恢复视图控制器的子视图