2016-11-24 72 views
-1

我想实现一个UIPageViewController和我收到以下错误:我的代码如下UIPageViewController - 不符合协议

import UIKit 

class ShopViewController: UIPageViewController, UIPageViewControllerDataSource { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    } 
} 

这给了我一个错误,指出:ShopViewController不符合协议UIPageViewControllerDataSource。

于是我发现了另一个线程建议我增加了以下功能:

func pageViewController(pageViewController: UIPageViewController,  viewControllerAfterViewController viewController: UIViewController) -> UIViewController? 

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? 

后做,所以我的代码现在:

class ShopViewController: UIPageViewController, UIPageViewControllerDataSource { 

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? 

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    } 
    } 

但我仍然得到一个错误说同样的+预期{在函数声明中我添加了2个新函数。

任何人都可以帮忙吗?

+0

您所做的一切都是定义协议中出现的一些函数。你实际上需要添加那些你想做的功能的*实现*。 IE浏览器。添加代码以返回相应的下一个/上一个视图控制器 – Paulw11

+0

好的,谢谢! –

回答

1

你需要使用这样的,因为你正在使用UIPageViewController,你是不执行委托方法viewControllerAfterUIPageViewController这就是为什么你收到此错误viewControllerBefore

class ShopViewController: UIPageViewController, UIPageViewControllerDataSource { 

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 
     // Returns the view controller after the given view controller. 
     return self 
    } 

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 
     // Returns the view controller before the given view controller. 

     return self 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
}