如何在ViewController中嵌入的Container视图中设置UIPageViewController的委托

时间:2017-07-12 16:03:49

标签: swift uipageviewcontroller

我有一个MainViewController,其中有一个嵌入UIPageViewController的容器视图。 MainViewController符合协议UIPageViewControllerDelegate, UIPageViewControllerDataSource 我希望UIPageViewController委托嵌入式MainViewController。 这甚至可能吗?

基本上我试图采用类似的态度将视图控制器中的集合视图作为故事板的出口,然后为它设置委托(collectionView.delegate = self,假设自己委托) 所以这种态度有UIPageViewController。 我遇到的障碍是没有PageView作为PageViewController的反对者(与集合视图相比,我有CollectionView而不是CollectionViewController

enter image description here

2 个答案:

答案 0 :(得分:1)

以下是您可以使用以下步骤:

您可以通过覆盖MainViewController中的func prepare(for segue: UIStoryboardSegue, sender: Any?)来获取对UIPageViewController的引用。嵌入式控制器成为子控制器时会触发此功能。

鉴于你给了你的segue一个名字(让我们在这个例子中使用 pageSegue ),你可以在MainViewController中做这样的事情:

func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "pageSegue", let controller = segue.destination as? UIPageViewController {
        controller.delegate = self
        controller.dataSource = self
    }

}

答案 1 :(得分:1)

您可以通过以下方式将对页面视图控制器的引用添加到主视图控制器:

var walkthroughPageViewController: WalkthroughPageVC? {
        return self.children.first as? WalkthroughPageVC
}

在这里,您只需设置walkthroughPageViewController.delegate = self

仅当您具有一个嵌入式视图控制器时,此方法才有效。

如果有多个,则上面的Thomas方法更适合于获取所需的特定视图控制器。