【问题标题】:UIPageViewController - Does not conform to protocolUIPageViewController - 不符合协议
【发布时间】: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。添加代码以适当地返回下一个/上一个视图控制器

标签: ios swift uiview swift3 uipageviewcontroller


【解决方案1】:

您需要像这样使用它,因为您正在使用UIPageViewController,并且您没有实现UIPageViewController 的委托方法viewControllerAfterviewControllerBefore,这就是您收到此错误的原因。

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()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多