UIViewController状态恢复 - 弱关系

时间:2013-12-18 18:15:54

标签: ios objective-c uiviewcontroller state-restoration

使用iOS 6 Apple将状态恢复添加到UIViewController及相关课程。这允许应用程序在终止时保存状态,并在用户恢复应用程序时将其恢复。

一切似乎都很好,但是我已经达到了一个不想融入模式的奇怪场景。

假设我们有两个视图控制器ViewControllerOneViewControllerTwo,它们都存储了一些成功恢复的任意状态。现在让我们假设ViewControllerOne具有delegate属性,ViewControllerTwo是该委托(这是模态视图控制器的常见模式)。谁负责恢复这种关系?它应该如何存储/恢复?

在我的特定情况下,不涉及故事板,通过restorationClass属性在代码中进行恢复。我的第一直觉是尝试恢复关系,同时在restorationClass中创建视图控制器,但是由于restorationClass不知道其他现有的控制器,它无法完全恢复这种关系。

或者,如果是视图控制器声明delegate属性,那应该是恢复关系,那么现在如何在其他类中恢复的控制器实例?

简而言之,这似乎是一个记录不完整的情景,我希望有人可以对此有所了解。

1 个答案:

答案 0 :(得分:3)

我想说,任务落在委托视图控制器上以自己设置,就像你在推动其他视图控制器之前那样。

关于如何实现这一目标,您有几种选择。

您可以在全局可访问的位置(例如,app委托)中存储对视图控制器的弱引用,并在application:didDecodeRestorableStateWithCoder:中使用这些值来设置委派 - 这是此方法的用途。 API。

或者,您可以发布" hereIAmThisIsMe"来自顶级视图控制器的通知(带有self部分用户信息),委托监听并将自己设置为委托。