UIPageViewController 重置状态迅速

问题描述

我想问一下是否有任何方法可以在 UIPageViewController 实现中重置我们的视图。例如我有两种观点, 在视图 A 中,有一个按钮可以在单击时更改文本以及表格视图。单击按钮或滚动到表格视图中间时,当我滑动到视图 B 时,当我返回视图 A 时,视图 A 中的状态不会被重置,其中按钮的文本未重置,并且我的 tableview 位于我之前滚动的位置的中间。 一旦我们在 UIPageViewController 之间移动页面,有什么办法可以重置页面的状态吗?

解决方法

答案是“这有点复杂。”

背景:

如果您的页面视图控制器中只有 2 个页面,则页面视图控制器可能会保留对这两个页面的强引用,因此当您在它们之间来回翻页时,它们将保持其状态。

如果您有 2 个以上的页面,并且没有同时显示 2 个页面并使用中心书脊,则当前未显示或下一个未显示的页面可能会被释放,然后您将重新创建它们当用户显示它们时。在这种情况下,页面不会记住它们的状态,除非你做额外的工作,以便它们在移出屏幕时保存它们的状态。

您的情况:

您总是希望在用户滑动到不同页面然后再次返回时重置您的页面。

我建议您编写页面的视图控制器逻辑,以便它们通过将自身重置为初始状态来响应 viewWillAppear(animated:)。 (将表格视图滚动到顶部、重置按钮状态等。)

理想情况下,您可能希望将其设为由标志 (resetsOnAppear: Bool) 控制的选项。这样,如果您以后决定不希望发生这种情况,您只需将该标志设置为 false,而不必重构您的代码。