UIPageViewController 如何访问不可见页面
Posted
技术标签:
【中文标题】UIPageViewController 如何访问不可见页面【英文标题】:UIPageViewController how to access invisible page 【发布时间】:2014-09-16 18:44:39 【问题描述】:我正在使用UIPageViewController
在包含一些数据的页面之间实现无限水平滚动。过渡类型设置为滚动。
一旦用户开始水平滚动,我就会通过viewControllerAfterViewController
和viewControllerBeforeViewController
代表返回上一页和下一页的详细视图控制器。
并且在任何给定时间 pageViewController 都会有一个滚动视图和三个页面在这个滚动视图中(我可以确认使用 Xcode Debug View Hierarchy)。如何访问不可见页面? .viewControllers
属性只包含一个与可见页面对应的元素。
【问题讨论】:
【参考方案1】:UIPageViewController
的默认行为是处理当前不可见的页面。它有点像UITableView
,但单元格是视图控制器。访问不可见 vcs 的唯一方法是在构建它们之后保留指向它们的强指针(对于无限数量的页面可能是不明智的),或者根据需要构建一个特定的。
这应该让你思考你打算用隐形 vc 做什么。如果您正在考虑改变它的外观,请再想一想:它不存在。同样,这有点类似于UITableView
,我们通常不直接更改单元格。相反,我们更改了我们的模型并且单元格发生了变化,因为它是根据 cellForRowAtIndexPath
: 中的模型进行配置的。
这里也有同样的想法。保持一个独立于页面 vcs 的模型。当他们得到viewWillAppear
时,他们可以根据模型配置他们的视图。
【讨论】:
你确定它适用于滚动类型的过渡吗?通过记录页面视图控制器的viewDidLoad
/dealloc
,我可以看到UIPageViewController
拥有三个页面以让用户左右滚动。
我最终使用弱引用将页面链接到每个页面,但仍然想知道是否有更好的方法。以上是关于UIPageViewController 如何访问不可见页面的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIPageViewController 和孩子之间正确传递对象
使用 UIPageViewController 使 UI 滚动视图滚动