我读到了:
创建一个名为PageViewController
的类,并将其设置为UIPageViewController
的子类。
创建后,采用UIPageViewControllerDataSource
协议,然后我们有:
class PageViewController:UIPageViewController, UIPageViewControllerDataSource
接下来,实现UIPageViewControllerDataSource协议的两个必需方法:
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
var index = (viewController as PageContentViewController).index
index++
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
var index = (viewController as PageContentViewController).index
index--
return self.viewControllerAtIndex(index)
}
因此,我的问题是:
这些func的参数(参数)如何( pageViewController 和 viewController )因为之前没有这些陈述而被传递给自己?
答案 0 :(得分:0)
这是Apple API中的常见模式。它经常用于代理和数据源。您可以这样看待它:ObjectA
是一个具有名为DataSourceA
的数据源的对象。 ObjectA
将调用DataSourceA
上的方法以获取有关要显示的数据的信息。当ObjectA
调用DataSourceA
中的方法时,它会传递DataSourceA
所需的所有信息,以便返回必要的数据。这样,DataSourceA
不需要维护自己对将要配置的任何对象的引用。
在您的示例中,pageViewController
参数实际上是UIPageViewController
本身。 UIPageViewController
将作为第一个参数参数传递给自己。 viewController
参数是UIPageViewController
当前显示的视图控制器。请记住,UIPageViewController
将显示的视图控制器存储在其viewControllers
属性中。因此,即使您无法确定viewController
属性的定义位置,UIPageViewController
也会对其进行引用。