8

当 UIPageViewController 通过 viewControllerBeforeViewController 和 viewControllerAfterViewController 方法调用数据源时,它正在获取用户再次滑动时将显示的视图控制器。是否有一个可写的属性来保存这些数据,直到它需要使用它?我问的原因是我希望用户能够向前或向后滑动,或者只需点击以前进到下一张幻灯片。但是,如果我点击以从第一张幻灯片前进到第二张(使用 setViewControllers 方法前进),我无法向后滑动;没有返回控制器可以返回。这仅影响第二张幻灯片。所以我需要能够以编程方式设置以前的控制器。

任何帮助将不胜感激。

谢谢。

4

3 回答 3

8

我有类似的问题并发现,UIPageViewController将其缓存的视图控制器页面存储在childViewControllers数组中。

于 2015-01-16T13:01:14.887 回答
0

无法访问缓存的视图控制器。当您实现数据源方法以启用滑动时,您可以保留一个指针:

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:
于 2014-01-16T00:21:24.967 回答
0

As described in Kelin's answer, the children array contains the "loaded" view controllers. This information can also be used for propagating changes among loaded view controllers. (A common scenario would be ending the refresh of a refresh control.)

In Swift you can do something like this:

for vc in children {
    if let tableVC = vc as? UITableViewController {
         tableVC.refreshControl?.endRefreshing()
    }
}

(Where self is of type UIPageViewController)

于 2019-12-22T04:15:46.320 回答