【问题标题】:UIPageViewController reset states swiftUIPageViewController 快速重置状态
【发布时间】:2021-08-03 21:19:48
【问题描述】:
我想问是否有任何方法可以在 UIPageViewController 实现中重置我们的视图。例如我有两个视图,
在视图 A 中,有一个按钮可以在单击时更改文本以及一个表格视图。一旦我点击了按钮或者当我在我的表格视图中滚动到中间时,当我滑动到视图 B 时,当我返回到按钮的文本未重置的视图 A 时,我在视图 A 中的状态将不会被重置并且我的表格视图位于我之前滚动的中间位置。
一旦我们在 UIPageViewController 之间移动页面,有什么方法可以让页面重置它们的状态?
【问题讨论】:
标签:
swift
uipageviewcontroller
【解决方案1】:
答案是“有点复杂。”
背景:
如果您的页面视图控制器中只有 2 个页面,则页面视图控制器可能会保留对两者的强引用,因此当您在它们之间来回翻页时,它们将保持其状态。
如果您有 2 个以上的页面,并且没有同时显示 2 个页面并使用中心书脊,则当前不可见或接下来要显示的页面可能会被释放,然后您将重新创建它们当用户显示它们时。在这种情况下,页面不会记住它们的状态,除非你做额外的工作以便它们在离开屏幕时保存它们的状态。
你的情况:
您总是希望您的页面在用户滑动到另一个页面然后再次返回时重置。
我建议您编写页面的视图控制器逻辑,以便它们通过将自己重置为起始状态来响应viewWillAppear(animated:)。 (将表格视图滚动到顶部、重置按钮状态或其他任何方式。)
理想情况下,您可能希望将其设为由标志 (resetsOnAppear: Bool) 控制的选项。这样,如果您以后决定不希望这种情况发生,您只需将该标志设置为 false,而不必重构您的代码。