问题标签 [uikit-state-preservation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7716 浏览

iphone - iOS 6 - 状态保存和恢复

我已经实现了用于状态保存的 iOS 6 API,它可以工作 - 在我退出应用程序并重新启动几毫秒后,恢复的视图控制器飞入,但随后它被我在启动时显示的主视图控制器取代。

每次应用程序启动主窗口的根视图时,我都会进行设置,所以这一定是问题所在。

这是我的代码:

您可以在 -(void)commonInitializationLaunching:(NSDictionary *)launchOptions 中看到我正在设置窗口的根视图。我不知道在里面放什么。也许检查是否有保存状态然后加载此方法?但是怎么做?

谢谢!

以下是我按照 Rob 的建议尝试过的方法:

什么都没有willFinishLaunching......我也从我的commonInitializationLaunching方法中删除了窗口代码。

0 投票
4 回答
1858 浏览

iphone - UIKit 状态保存不恢复滚动偏移

我有一个在 iOS 6 中使用 UIKit 状态保存的应用程序。我能够保存/恢复视图控制器的状态,即选择了哪个选项卡和导航控制器层次结构,但是我无法让我的表视图恢复它的偏移量。我的故事板中有一个用于视图以及视图控制器的恢复标识符,并且视图控制器(表的数据源)实现UIDataSourceModelAssociation如下:

modelIdentifierForElementAtIndexPath:inView:当应用程序进入后台时modelIdentifierForElementAtIndexPath:inView:被调用,但从未被调用。

0 投票
1 回答
481 浏览

ios - iOS 6 状态保存和恢复的自动化测试

我正在更新应用程序以使用 iOS 6 中的新状态保存和恢复功能。据我所知,在应用程序中测试此功能的最佳指南涉及手动操作(例如http://www.absoluteripple.com/1 /post/2012/09/ios-6-state-preservation-and-restoration.html)。

有什么方法可以自动测试保存和恢复状态吗?

0 投票
2 回答
5047 浏览

iphone - iOS 状态保存和容器视图

我在故事板中有一个使用容器视图的视图控制器。两者都设置了恢复标识符。父母正在被保存和恢复得很好。然而孩子不是。在子视图控制器上既不调用-encodeRestorableStateWithCoder:也不调用。-decodeRestorableStateWithCoder:

保存使用视图容器创建的子视图控制器的正确方法是什么?我可以将子视图控制器保存在 parents-encodeRestorableStateWithCoder:中,这将导致它被保存,但我无法在恢复期间使用它。

0 投票
1 回答
617 浏览

ios - 我们在哪里可以找到 WWDC 2012 Session 208 中提到的“Restrospector”工具?

WWDC 2012 Session 208 是关于 UIKit 状态保存和恢复的。最后几乎提到了调试工具“Restrospector”。它应该可视化磁盘上的持久状态。

状态本身被保存到“保存的应用程序状态”目录中的文件“data.data”中。当您打开它时,它是一个 XML 文件,但其中的一部分不是人类可读的。

我确实搜索了 Apple 开发者论坛和开发者网站,但也只有一些人要求使用此工具,但没有人给出答案。也许堆栈溢出可以提供帮助?

0 投票
1 回答
148 浏览

ios - 如何在 iOS 中切换控制器时保留 TableViewCell 颜色

我创建了包含第一个 CategoryViewController 和第二个 CheckListTableController 的 StoryBoard segue 应用程序。类别(按钮)明智我在 CheckListTableController 的 tableview 上打开不同的问题列表。

我在 tableView 单元格中设置了选中和取消选中按钮及其各自的颜色。我已经采用 NSMutableArray 并将 indexPath 添加到此以将特定颜色设置为单元格。

当我在这些控制器之间导航时,我希望我的 tableView 单元格颜色应该保留。

任何想法如何做到这一点。提前致谢。

编辑查询 26Aug13

现在我需要使用 plist 文件或核心数据来实现相同的功能。这样用户就可以保存任务会话并在以后访问它。例如。在第一个会话中,他确实检查了 ABC 建筑物的取消选中标记,然后会话保存。第二次会议他再次检查/取消了不同位置 XYZ 建筑物的活动,然后保存。

哪种方法适合这里。Plist 文件或核心数据?你能把我重定向到具体的解决方案吗?

用一些代码编辑

0 投票
0 回答
224 浏览

ios - 依赖服务数据的应用程序的 iOS 状态保存和恢复策略

当您的应用程序依赖于来自服务器的大量数据并且数据可能在应用程序运行之间发生显着变化时,任何人都有关于如何处理状态恢复和保存的好策略?

我观看了有关状态保存和恢复的视频 WWDC 2012-Session 208,我明白您正在保存和恢复应用的视图控制器,而不是应用使用的数据模型。

但是,当您的视图控制器显示的内容与您从服务接收的数据密切相关时,其中一些数据要么是陈旧的,要么在您的应用程序关闭并重新启动后不再存在时,您无法保存对象的 id 并希望稍后重新显示。

我遇到的大多数示例应用程序似乎都涵盖了应用程序数据相当静态且似乎并非来自服务的简单版本。

我的问题是:1) 对于客户端/服务器风格的应用程序,必须考虑哪些问题和其他注意事项?

2) 考虑到注意事项,您将在应用程序的哪个位置发起对远程服务的调用以刷新数据?

0 投票
3 回答
4378 浏览

ios - 没有情节提要的 UIViewController 状态恢复不起作用

我想在不使用情节提要的 iOS 6 应用程序中实现状态保存和恢复。我想要保存状态和恢复的主视图控制器是 UIViewController,它是 UINavigationController 的一部分。

我的视图控制器扩展了 UIViewControllerRestoration 协议。我想我正在实现所有必要的方法,但我没有看到模拟器对 encodeRestorableStateWithCoder 或 decodeRestorableStateWithCoder 的任何调用。

这是我的应用程序委托的样子:MyAppDelegate:

我在调试窗口中看到了所有这些调用。这是我的 MyMainViewController(在应用程序挂起时可见)的样子:

我使用模拟器测试保存和恢复的方式:

我不确定我还缺少什么来完成这项工作。

0 投票
1 回答
625 浏览

core-data - 如何在不将其保存到父上下文的情况下持久保存临时 NSManagedObjectContext

我使用 CoreData 来管理我的应用程序数据模型。我在我的编辑视图控制器中使用子托管对象上下文,以便我可以保存或丢弃用户所做的更改。

我创建子上下文如下:

如果用户点击“完成”按钮,我保存更改如下:

如果用户点击“取消”,我只会丢弃 editMoc 上下文。

问题是:我在整个应用程序中使用状态保存和恢复,并且我想在应用程序进入后台时保存带有更改的 editMoc 上下文以便进一步恢复。我不想将 editMoc 与 mainMoc 合并,因为用户尚未决定是保存还是放弃更改。

我尝试使用 NSCoding 协议对 editMoc 进行序列化,但注册的对象并没有以这种方式保存。我也尝试更改 parentContext,但这会引发异常。

我相信应该有一个很好的方法来完成上述任务,因为使用子上下文和状态保存是一种常见的做法。

我的项目在 iOS 6.0 及更高版本上运行。

0 投票
2 回答
248 浏览

ios - 模态 Segue 视图控制器保留

我有一个快速的问题。我有一个ViewController(父母)里面有一个UITableView。在该视图中包含一个按钮,该按钮viewController使用UITableView. 子代viewController充当过滤器来更新父代的表。我的目标是在解雇后保留过滤器viewController(子)的状态,以便我可以返回并更新过滤器选择。

经过研究,我发现文档包含有关保留整个应用程序状态、在应用程序关闭等情况下的信息。我不确定这是否是我需要的那种方法,以便viewController在解雇后保留它。

链接在这里:

苹果文档

博客演练

这是处理这个问题的正确方法还是我错了?

谢谢!