如何将集合视图和页面视图放在一个场景中

时间:2019-01-25 15:44:24

标签: ios swift

我正在创建如下屏幕:

screen

但是问题是,pagedView需要我的视图控制器从UIPagedViewController继承,而colleciton视图需要从UICollectionViewController继承。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您不必使用UIPagedViewControllerUICollectionViewController使其继承自UIViewController,而在内部说loadView/ViewDidLoad则使用

let pager = UIPagedViewController()
// then add it as a child vc and constraint it's view or set a frame

let collec = UICollectionView(///
// add to view and constraint also

上面的内容也应该是实例vars,因此它们的委托/数据源将被保留

答案 1 :(得分:1)

这样怎么样?

class MyPagedView: UIView, UIPageViewControllerDataSource {
    // add your pages
}

class MyCollectionView: UICollectionView, UICollectionViewDataSource {
    // add your collection view
}

class ViewController: UIViewController {
    lazy var myPages: MyPagedView = {
        let pages = MyPagedView()
        return pages
    }()
    lazy var myCV: MyCollectionView = {
        let cv = MyCollectionView()
        return cv
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(myPages)
        view.addSubview(myCV)
    }

}

当然,您将必须根据需要设置约束。