如何删除 UIPageViewController 中的 previousViewControllers
Posted
技术标签:
【中文标题】如何删除 UIPageViewController 中的 previousViewControllers【英文标题】:how to remove previousViewControllers in UIPageViewController 【发布时间】:2015-01-30 13:06:58 【问题描述】:我正在尝试删除 UIPageViewController 中所有以前分配的 ViewControllers 以减少内存使用量我在 UIPageViewController 中有 100 多个页面,因此它占用了太多内存并且看起来 UIPageViewController 没有释放分配的 ViewControllers
【问题讨论】:
内存中不应该有 100 个控制器。UIPageViewController
的工作方式类似于 UITableView
或 UICollectionView
,它有一个提供控制器的数据源,因此它不应该将所有控制器都保存在内存中,
我知道 tableView 使单元格出列,但在 pageViewController 中正在实例化视图控制器并且永远不会释放它们,直到 pageViewcontroller 收到内存警告或我的应用程序在每个页面中都有一个图像,所以每个图像都被分配但是未发布,这里的答案说了很多question
【参考方案1】:
你可以使用
- (void)setViewControllers:(NSArray *)viewControllers
direction:(UIPageViewControllerNavigationDirection)direction
animated:(BOOL)animated
completion:(void (^)(BOOL finished))completion
pageViewController 的方法来设置你想要显示的新的viewControllers数组,之前的控制器会被释放。
【讨论】:
那么我应该将ViewControllers 设置为仅当前可见的ViewController 还是什么,你能解释一下你的想法吗? 是的,您可以这样做,但您应该查看UIPageViewControllerDataSource
以避免将视图控制器保留在内存中,它们将由 UIPageViewController 正确处理。
我只是这样做了,但是如果我向右或向左滑动就没有更多页面了,它没有得到任何新页面,你的意思是我应该查看数据源我应该在那里做什么?跨度>
这里是一个 UIPageViewController 使用数据源makemegeek.com/uipageviewcontroller-example-ios 的例子希望对你有帮助,你也可以查看苹果文档了解更多信息。以上是关于如何删除 UIPageViewController 中的 previousViewControllers的主要内容,如果未能解决你的问题,请参考以下文章
从 UIPageViewController 中删除之前添加的 viewController
从 Swift 3 中的 UIPageViewController 中删除黑边
从 UIPageViewController 中移除页面指示器
iOS 7 iPad:UIPageViewController 中的 UITableView 滑动删除(手势识别器冲突)
我可以禁用UIPageViewController的页面边框手势识别器吗?刷卡一个?
如何从属于 UIPageViewController 的 UIViewController 之一更改 UIPageViewController?