如何让 UIPageViewController 自动切换控制器
Posted
技术标签:
【中文标题】如何让 UIPageViewController 自动切换控制器【英文标题】:How to make UIPageViewController switch controllers automatically 【发布时间】:2017-04-22 17:10:12 【问题描述】:我正在关注 Duc Tran 关于 UIPageViewController 的精彩教程。我想知道如何在不让用户滑动的情况下使 UIPageViewController 中的控制器自动转换。这就是代码在没有委托和数据源的情况下的样子。
class AnimesPageVC: UIPageViewController
override var navigationOrientation: UIPageViewControllerNavigationOrientation return .horizontal
weak var pageViewControllerDelegate: AnimePagesVCDelegate?
var timeInterval: Int?
var images: [UIImage]?
lazy var animes: [UIViewController] =
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var animes = [UIViewController]()
if let images = self.images
for image in images
let anime = storyboard.instantiateViewController(withIdentifier: "AnimeImage")
animes.append(anime)
self.pageViewControllerDelegate?.setUpPageController(numberOfPages: animes.count)
return animes
()
override func viewDidLoad()
super.viewDidLoad()
delegate = self
dataSource = self
loadPage(atIndex: 0)
func loadPage(atIndex: Int)
let anime = animes[atIndex]
var direction = UIPageViewControllerNavigationDirection.forward
if let currentAnime = viewControllers?.first
if let currentIndex = animes.index(of: currentAnime)
if currentIndex > atIndex
direction = .reverse
configurePages(viewController: anime)
setViewControllers([anime], direction: direction, animated: true, completion: nil)
func configurePages(viewController: UIViewController)
for (index, animeVC) in animes.enumerated()
if viewController === animeVC
if let anime = viewController as? AnimeVC
anime.image = self.images?[index]
self.pageViewControllerDelegate?.turnPageController(to: index)
那么我怎么能得到这种行为。将不胜感激任何帮助。 :)
【问题讨论】:
【参考方案1】:在视图中添加一个计时器确实加载并使用更新的索引调用相同的加载函数
Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) (_) in
// call your function here
self.loadPage(atIndex: index + 1)
// you have to update your index also.
self.index = self.index + 1
这将每 0.3 秒调用一次 loadPage 函数
请记住,如果您只进入下一页,我的解决方案仅适用于一种方式,因为我自动添加它不会返回到之前的控制器,因为您已经执行了类似的操作
index = index - 1
【讨论】:
谢谢哈立德,它工作。但是,它只在第一次工作。它从第一个控制器切换到第二个控制器,但不会切换到下一个控制器。它也停留在第二个控制器上,所以如果我尝试滑动到下一个或上一个控制器,它会返回到第二个控制器。 因为你现在也必须更新你的索引,你的索引是 0,你加 1。你必须保持你的索引也更新,这样它才能工作。我正在编辑答案,以便您查看以上是关于如何让 UIPageViewController 自动切换控制器的主要内容,如果未能解决你的问题,请参考以下文章
旋转到横向时如何让 UIPageViewController 工作?
如何让 UIPageViewController 使用过渡样式滚动?
如何让 UIPageViewController 知道我的异步下载何时完成?
如何设置 UIPageViewController(分页类型)手势委托