UIPageViewController - 不符合协议
Posted
技术标签:
【中文标题】UIPageViewController - 不符合协议【英文标题】:UIPageViewController - Does not conform to protocol 【发布时间】:2016-11-24 22:18:55 【问题描述】:我正在尝试实现 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 个新函数的函数声明主体中显示相同的 + 预期 。
有人可以帮忙吗?
【问题讨论】:
你所做的只是定义一些出现在协议中的函数。您实际上需要添加那些执行您想要的功能的实现。 IE。添加代码以适当地返回下一个/上一个视图控制器 【参考方案1】:您需要像这样使用它,因为您正在使用UIPageViewController
,并且您没有实现UIPageViewController
的委托方法viewControllerAfter
和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()
【讨论】:
以上是关于UIPageViewController - 不符合协议的主要内容,如果未能解决你的问题,请参考以下文章
UIPageViewController 和 UIScrollView
NavigationController 中的 UIPageViewController