ios – UIViewController状态恢复 – 弱关系

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

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

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

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

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

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

解决方法

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

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

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

或者,您可以从顶级视图控制器发布“heReiamThisIsMe”通知(具有用户信息的自身部分),委托监听该通知并将其自身设置为委托.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...