【问题标题】:Preserving state of UIViewController保留 UIViewController 的状态
【发布时间】:2014-04-18 13:49:05
【问题描述】:

我见过许多相互矛盾的答案,似乎取决于具体情况,但我还没有找到适合我的答案。我正在 Storyboard 中构建一个选项卡式应用程序,我想将视图控制器的状态保存在导航控制器内的一个选项卡中。它动态创建了我想在应用关闭时保留的对象(标签和图片)。

到目前为止,我在 AppDelegate.m 中有以下内容:

-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder {
return YES; }
-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder {
return YES; }

在我的 viewController.m 文件中:

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder {
[coder encodeObject:self.view forKey:@"view"];
[super encodeRestorableStateWithCoder:coder]; }

-(void)decodeRestorableStateWithCoder:(NSCoder *)coder {
self.view = [coder decodeObjectForKey:@"view"];
[super decodeRestorableStateWithCoder:coder]; }

我还为 UITabBarController、导航控制器和相关视图控制器分配了 RestorationID。

现在,如果我最小化并恢复,数据会被保留,但如果我停止并使用 xcode 重新启动,它就会丢失。我错过了什么?

【问题讨论】:

    标签: ios uiviewcontroller


    【解决方案1】:

    尝试运行一个应用程序,按下 Home 按钮两次以转到应用程序切换器,将应用程序滑开以关闭它,然后通过单击主屏幕上的图标运行它(不是来自 Xcode!)。现在一切都好吗?

    我想当你从 Xcode 运行你的应用程序时,它不仅会重新启动它,还会重新安装它,所以这并不是你所需要的。

    【讨论】:

    • 从 xcode 运行会重新安装它吗?我没有意识到这一点,因为该应用程序并没有从模拟器中消失。我尝试关闭它并在模拟器中重新启动它;它被保存了,但奇怪的是,几秒钟后,保存状态消失了。这只是一个xcode错误吗?您指的是在设备上实际测试它吗?
    • 好吧,根据 WWDC2013 演示文稿“状态恢复中的新功能”,应用程序在关闭后恢复就足够了,而不是在重建时说它支持状态恢复。至少它是这样被证明的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多