输入' ViewController'不符合协议' UICollectionViewDataSource'

时间:2014-09-26 16:44:34

标签: ios swift objc-protocol

我正在学习使用UIPickerController来操作相机的教程。但是,在实施UICollectionViewDatsaSource时,我收到一条错误消息,指出ViewController不符合UICollectionViewDataSource协议。

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate 

有关如何解决此问题的任何想法?

4 个答案:

答案 0 :(得分:32)

您必须在ViewController课程中实施这两种方法:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {}

P.S。 - 您的函数原型应与上述函数完全匹配。(删除任何'!'如果存在)

答案 1 :(得分:3)

您必须在Collection类的ViewController类中实现这两个方法:

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    <#code#>
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    <#code#>
}

答案 2 :(得分:2)

将协议定义添加到自定义类是不够的。您必须提供协议所需的功能。请参阅协议的文档,您必须至少实现:

collectionView:numberOfItemsInSection:
collectionView:cellForItemAtIndexPath:

答案 3 :(得分:0)

UICollectionViewDataSource必须实现两个函数!(它们是协议所需的函数)。

要解决此问题,只需实现以下两个函数: enter image description here