我正在使用 UIPageViewController(包含两个 UIViewController 和一个 UITableViewController)在我的应用程序中导航。我使用 setViewControllers
方法添加了从一个页面移动到另一个页面的按钮,许多堆栈溢出问题中都建议使用该方法。但是,如果我从 View Controller B 开始,滑动到 View Controller A,然后使用建议的 setViewControllers 方法返回到 View Controller B,它不会简单地返回到页面,它会加载 View Controller B 的新实例。这这是一个问题,因为我在 View Controller B 中显示从 Internet 检索到的数据,因此每次都检索这个数据非常低效。
现在我知道这是可能的,因为 snapchat、tinder 和 fling 都可以做到。除非他们只是存储要显示的数据并每次都加载
最佳答案
根据您在评论中的阐述,您已经注意到页面 View Controller 的滚动样式确实恰好缓存了相邻的 View Controller 。但那是一个实现细节,你不应该依赖它。在我看来,您好像不恰本地使用了页面 View Controller ,尤其是因为您只有三个“页面”。我会建议其中之一:
标签栏 Controller 。同样,这样做的好处是所有选项卡栏 Controller 的子级都保持事件状态。
ScrollView ,构成您自己的自定义父 View Controller 的基础。您可以将所有三个“页面”作为包含的 View 并排放置,然后滚动。这具有更大的优势,滚动可以正常工作(尽管您也可以让它为选项卡栏 Controller 工作)并且您完全掌控一切,因此 children 再次保持活力。
关于ios - 以编程方式更改 UIPageViewController 页面而无需重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29638847/