问题标签 [state-restoration]

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 回答
1110 浏览

ios - iOS 8 中的 UISplitViewController 状态恢复

在 iOS 8 上,UISplitViewController 似乎可以保存和恢复其子视图的状态,例如,主视图是否隐藏。

这是不可取的,因为我的应用程序应始终以横向显示主视图并始终以纵向隐藏它。如果用户以横向关闭应用程序(保存横向状态)并以纵向重新打开它(恢复横向状态),则 UISplitViewController 会以错误的配置显示主视图。

我仍然需要向 UISplitViewController 提供恢复标识符,以便子视图控制器保存和恢复自己的状态。那么如何防止 UISplitViewController 恢复它自己的状态,或者覆盖这个行为呢?

0 投票
1 回答
328 浏览

ios - 删除状态保存和恢复过程中保存的数据

我的应用程序在不同时间保留并恢复了一堆状态,我想给用户一个清除所有内容的选项。

是否可以以编程方式清除所有保留的数据?

0 投票
1 回答
276 浏览

ios - 状态恢复后,dismissViewControllerAnimated 没有使用相同的动画

我正在使用故事板实现一个 iOS 应用程序,其中一个按钮调用dismissViewControllerAnimated以从视图控制器移回B前一个视图控制器A

在两个控制器之间,我使用水平翻转动画设置了模态转场:

View Controller A → (Modal Segue with Flip transition) → View Controller B

点击按钮,dismissViewControllerAnimated执行翻转转换反转按预期

但是当应用程序使用状态恢复机制来显示控制器B时,使用的过渡是标准的(视图弹出)而不是翻转过渡。

dismissViewControllerAnimated恢复后如何 使用相同的过渡类型?

0 投票
3 回答
826 浏览

ios - iOS 状态恢复动画错误

我只是想在我的一个应用程序中实现 iOS 状态恢复 API。在终于让它工作之后,我发现我以模态方式呈现的 ViewController 使用动画恢复了,这不是我想要的。我希望我的应用程序处于我离开它的状态,但没有让用户看到他到达那里很热。

所以我继续下载了 Apple 示例代码:https ://developer.apple.com/library/ios/samplecode/StateRestore/Introduction/Intro.html并想看看它是否也发生在那里。事实证明确实如此。

此外,日志中还有一条警告:

你能告诉我我和 Apple 的示例代码是否做错了什么,或者它是否是 iOS 中的错误?

顺便提一句。我在iOS8上测试

感谢您的帮助,乔治

0 投票
1 回答
1629 浏览

android - Android:恢复recyclerview视差

我尝试使用回收器视图编写自己的视差效果。目前它工作得很好......直到我不改变我的设备方向。

在状态恢复时,我取回用于计算标题 Y 转换的“指标”变量,这没有问题。但是我在修复后很难从不同的观点获得高度。

基本上这是我记录的内容:

D /视差:gridHeight:0 - 工具栏:0 - 海报:0

我尝试使用 .measure() 然后 getMeasuredHeight() 但这是我得到的:

D /视差:gridHeight:0 - 工具栏:128 - 海报:1108

也许我误用了Measure。或者也许我应该在另一个时刻使用我的视差方法?(运行时的衣服?)如果你有任何线索......

这是我阅读一年后的第一个问题。希望我做到了这一点。并感谢您的帮助;)

这是我的代码:

和我的布局:

最后是我使用 measure() 的方式

0 投票
1 回答
230 浏览

ios - 编码一个 int 或 NSInteger 用于状态恢复

我正在我的应用程序中实施状态恢复。窗口恢复得很好,所以现在我正在尝试对视图控制器的某些属性进行编码,这些属性与用于保留视图控制器视图状态的索引相关。我有:

我将以下内容添加到我的视图控制器 .m 文件中(也尝试使用 NSInteger,但我正在粘贴 int 代码)

无论我使用 int 还是 NSInteger,只要我输入这些信息,我都会收到相同的错误消息(无法构建)

为了

错误消息是“不兼容的 integet 到指针转换将 'int' 发送到类型 id 的参数。”

而对于

错误是“从'id'分配给'int'的整数转换指针不兼容”

显然,这些错误是其中之一。但是必须有一种方法来编码一个 int,即使没有,为什么即使我使用 NSInteger test int 并将上述所有内容替换为 self.testint 而不是 self.index,我也会得到这些错误。在后一种情况下,我使用的是指针。

所以我的问题是我如何编码一个int(首选)或一个NSInteger?谢谢你。

0 投票
2 回答
1523 浏览

javascript - 在 UIWebView 中恢复位置

我需要将 UIWebView 中的当前位置存储到磁盘并在以后启动时从磁盘重新加载它。

我之前所做的是将window.scrollXand存储在window.scrollY一个 javascript 位置。这适用于许多情况。

此外,我通过获取电流来存储比例:

并通过使用javascript设置视口初始比例来恢复它。

所有这些都有效,但并不可靠。有没有更好的方法?

我阅读了关于UIWebView'srestorationIdentifier但我不确定是否可以将其保存到磁盘?

0 投票
2 回答
1748 浏览

ios - UICollectionView 状态恢复:自定义滚动位置

我正在尝试为元素可能四处移动的 UICollectionView 找到处理状态恢复的最佳方法。我的目标是确保在重新启动应用程序时,集合视图中最后查看的项目仍然可见,即使项目已经移动。例如,当应用程序被终止时,项目 A 位于索引 3 的单元格中,并且当应用程序重新启动时,如果模型说项目 A 应该显示在索引 4 处,我希望集合视图将偏移量初始化为索引 4 处的单元格.

正如文档所述,我认为在我的班级中实现UIDataSourceModelAssociation协议会为我解决这个问题:UICollectionViewDataSource

[UITableView 和 UICollectionView] 类使用该协议的方法来确保相同的数据对象(而不仅仅是相同的行索引)被滚动到视图中并被选中。

但是,我观察到的是,实现此协议确实会在恢复期间正确影响所选单元格的 indexPath (这对我的应用程序并不重要),但不会影响滚动位置。滚动位置(集合视图的 contentOffset)始终恢复到应用程序被终止时的确切位置,并且不受 UICollectionViewDataSource 的影响。

我确实有一个看起来像这样的解决方法。它与模型关联协议的模式基本相同,但我必须手动完成:

我是否误解了 UIDataSourceModelAssociation 的用法?有错误吗?有没有更优雅或更正确的方法来让它工作?

0 投票
3 回答
526 浏览

ios - iPhone 6+ 状态恢复与主拆分视图中的标签栏

我在 iPhone 6+ 中支持状态恢复时遇到问题。

这是我的层次结构: 在此处输入图像描述

问题是当状态恢复发生在纵向时,然后,稍后,在横向时进行状态解码尝试。

说明:竖屏模式下,只有TabBar作为主视图(实际上,详细视图并不存在),所以它被推到了TabBar导航的控制器中。

然后,稍后,当应用程序尝试执行横向状态恢复时,我的详细信息视图被推送到主导航控制器上(当它应该详细时)。

由于自定义层次结构,我已经相应地实现了 UISplitViewControllerDelegate 方法,并且它们工作正常。UISplitViewControllerDelegate 方法还确保状态恢复在以下情况下有效:

不起作用的是:Portrait -> Landscape,因为正如我所说,在未折叠状态时不会调用委托方法,因此视图层次结构不知道如何从主视图中拆分细节并将其嵌入到细节导航控制器中。

0 投票
0 回答
635 浏览

ios - Top most Child View Controller not calling viewControllerWithRestorationIdentifierPath:coder: for restoration state

I am implementing state restoration in my app. The root view controller is a UITabBarController. In each of the tabs I have a UINavigationController with child view controllers. State restoration appears to be working fine in the UITabBarController. The issue is in one of the tabs the UINavigationController's top most child View Controller will not call the restoration method: +viewControllerWithRestorationIdentifierPath:coder:

The navigation controllers root view is always going to be a UITableViewController. Depending on what cell is selected you can push to either a DetailViewController or a ProfileViewController. Everything is setup up correctly in my App Delegate and my storyboards and both of these restoration paths restore just fine:

TabBarController->NavigationController->TableViewController->DetailViewController

or

TabBarController->NavigationController->TableViewController->ProfileViewController

However, you also have the ability to push from the DetailViewController to the ProfileViewController and vice-versa but that's where the restoration fails. The top most view controller fails to restore:

TabBarController->NavigationController->TableViewController->DetailViewController->ProfileViewController (fails)

or

TabBarController->NavigationController->TableViewController->ProfileViewController->DetailViewController (fails)

When setting break points it appears that +viewControllerWithRestorationIdentifierPath:coder: is not being called on the top most view controller. It is being called if it's the first view pushed on top of the table controller, but not on any subsequent views be it either Detail to Profile or Profile to Detail.

The implementation of the ProfileViewController

and the DetailViewController are pretty straight forward:

The only thing I can possibly come up with is that the UITabBarController, UINavigationControllers, and UITableViewController all use Storyboards but the Detail and Profile views uses nibs and that there may be an issue where using more than one view controller with a nib on a navigation stack that uses storyboards won't restore properly. Any help would be greatly appreciated :)