如何在嵌入 ViewController 的容器视图中设置 UI PageViewController 的委托
how to setup the delegate for UIPageViewController inside Container view that is embeded in a ViewController
我有一个 MainViewController
,里面有一个嵌入了 UIPageViewController
的容器视图。 MainViewController
符合协议 UIPageViewControllerDelegate, UIPageViewControllerDataSource
我希望嵌入式 UIPageViewController
由 MainViewController
委托。
这可能吗?
基本上我试图以类似的态度将视图控制器中的集合视图作为情节提要的出口,然后为其设置委托(collectionView.delegate = self
,假设自己委托它)
于是这态度有了UIPageViewController
。
我遇到的障碍是没有 PageView
作为 PageViewController
的对立面(与集合视图相比,我有 CollectionView
而不是 CollectionViewController
。
以下是您可以用来生成此内容的步骤:
您可以通过覆盖 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
}
}
您可以通过以下方式将对页面视图控制器的引用添加到主视图控制器:
var walkthroughPageViewController: WalkthroughPageVC? {
return self.children.first as? WalkthroughPageVC
}
从这里,您可以设置 walkthroughPageViewController.delegate = self
当然,这种方法只有在你有一个嵌入式视图控制器的情况下才有效。
如果你有多个,Thomas 上面的方法更适合抓取你想要的特定视图控制器。
我有一个 MainViewController
,里面有一个嵌入了 UIPageViewController
的容器视图。 MainViewController
符合协议 UIPageViewControllerDelegate, UIPageViewControllerDataSource
我希望嵌入式 UIPageViewController
由 MainViewController
委托。
这可能吗?
基本上我试图以类似的态度将视图控制器中的集合视图作为情节提要的出口,然后为其设置委托(collectionView.delegate = self
,假设自己委托它)
于是这态度有了UIPageViewController
。
我遇到的障碍是没有 PageView
作为 PageViewController
的对立面(与集合视图相比,我有 CollectionView
而不是 CollectionViewController
。
以下是您可以用来生成此内容的步骤:
您可以通过覆盖 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
}
}
您可以通过以下方式将对页面视图控制器的引用添加到主视图控制器:
var walkthroughPageViewController: WalkthroughPageVC? {
return self.children.first as? WalkthroughPageVC
}
从这里,您可以设置 walkthroughPageViewController.delegate = self
当然,这种方法只有在你有一个嵌入式视图控制器的情况下才有效。
如果你有多个,Thomas 上面的方法更适合抓取你想要的特定视图控制器。