实现UIPageViewController

时间:2016-04-14 14:19:59

标签: swift

我读到了:

创建一个名为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 )因为之前没有这些陈述而被传递给自己?

1 个答案:

答案 0 :(得分:0)

这是Apple API中的常见模式。它经常用于代理和数据源。您可以这样看待它:ObjectA是一个具有名为DataSourceA的数据源的对象。 ObjectA将调用DataSourceA上的方法以获取有关要显示的数据的信息。当ObjectA调用DataSourceA中的方法时,它会传递DataSourceA所需的所有信息,以便返回必要的数据。这样,DataSourceA不需要维护自己对将要配置的任何对象的引用。

在您的示例中,pageViewController参数实际上是UIPageViewController本身。 UIPageViewController将作为第一个参数参数传递给自己。 viewController参数是UIPageViewController当前显示的视图控制器。请记住,UIPageViewController将显示的视图控制器存储在其viewControllers属性中。因此,即使您无法确定viewController属性的定义位置,UIPageViewController也会对其进行引用。