【问题标题】:UIPageViewController how to access invisible pageUIPageViewController 如何访问不可见页面
【发布时间】:2014-09-16 18:44:39
【问题描述】:

我正在使用UIPageViewController 在包含一些数据的页面之间实现无限水平滚动。过渡类型设置为滚动。

一旦用户开始水平滚动,我就会通过viewControllerAfterViewControllerviewControllerBeforeViewController 代表返回上一页和下一页的详细视图控制器。

并且在任何给定时间 pageViewController 都会有一个滚动视图和三个页面在这个滚动视图中(我可以确认使用 Xcode Debug View Hierarchy)。如何访问不可见页面? .viewControllers 属性只包含一个与可见页面对应的元素。

【问题讨论】:

    标签: ios objective-c cocoa-touch uipageviewcontroller


    【解决方案1】:

    UIPageViewController 的默认行为是处理当前不可见的页面。它有点像UITableView,但单元格是视图控制器。访问不可见 vcs 的唯一方法是在构建它们之后保留指向它们的强指针(对于无限数量的页面可能是不明智的),或者根据需要构建一个特定的。

    这应该让你思考你打算用隐形 vc 做什么。如果您正在考虑改变它的外观,请再想一想:它不存在。同样,这有点类似于UITableView,我们通常不直接更改单元格。相反,我们更改了我们的模型并且单元格发生了变化,因为它是根据 cellForRowAtIndexPath: 中的模型进行配置的。

    这里也有同样的想法。保持一个独立于页面 vcs 的模型。当他们得到viewWillAppear时,他们可以根据模型配置他们的视图。

    【讨论】:

    • 你确定它适用于滚动类型的过渡吗?通过记录页面视图控制器的viewDidLoad/dealloc,我可以看到UIPageViewController 拥有三个页面以让用户左右滚动。
    • 我最终使用弱引用将页面链接到每个页面,但仍然想知道是否有更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2023-03-04
    相关资源
    最近更新 更多