我正在学习使用UIPickerController
来操作相机的教程。但是,在实施UICollectionViewDatsaSource
时,我收到一条错误消息,指出ViewController
不符合UICollectionViewDataSource
协议。
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate
有关如何解决此问题的任何想法?
答案 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