首页 > 解决方案 > UIPageViewController 只有 1 个 UIViewController 和无限循环

问题描述

首先,我没有使用 UICollectionView,因为我需要将Slider放在 ViewContainer 中,并且不允许在其中放置可重复的元素。

正如我的问题标题所说,我想获得一个只有 1 个 UIViewController 和无限循环的 UIPageViewController 。

这是我当前的代码:

class ListPageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {

    var pages: [UIViewController] = []
    let viewModel = ListPageViewModel()

    override func viewDidLoad() {
        super.viewDidLoad()
        viewModel.delegate = self

        delegate = self
        dataSource = self

        if let storyboard = storyboard {
            pages = [
                storyboard.instantiateViewController(withIdentifier: "listViewController"),
                storyboard.instantiateViewController(withIdentifier: "listViewController")
            ]

            setViewControllers([pages.first!], direction: .forward, animated: true)
        }
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        return brother(controller: viewController)
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        return brother(controller: viewController)
    }

    func brother(controller: UIViewController) -> UIViewController? {
        if controller == pages.first { return pages.last }
        return pages.first
    }
}

问题是我无法引用唯一的 UIViewController,因为我创建了两个而不是一个,并且我需要从我的 UIPageViewController 操作那个子 UIViewController。

一些帮助?

标签: swiftuiviewcontrollerswift4uipageviewcontroller

解决方案


推荐阅读