15

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

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

关于如何解决这个问题的任何想法?

4

4 回答 4

32

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

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

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

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

于 2014-10-11T12:34:16.283 回答
3

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

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

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    <#code#>
}
于 2018-07-19T11:30:14.580 回答
2

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

collectionView:numberOfItemsInSection:
collectionView:cellForItemAtIndexPath:
于 2014-09-26T16:55:33.107 回答
0

UICollectionViewDataSource 有两个必须实现的功能!(它们是协议的必需功能)。

要解决这个问题,只需像这样实现两个功能: 在此处输入图像描述

于 2017-05-04T02:04:08.190 回答