类型'ViewController'不符合协议'UICollectionViewDataSource'
问题描述:
我正在学习使用UIPickerController
来操作摄像头的教程。但是,在执行UICollectionViewDatsaSource
时,出现错误,说明ViewController
不符合UICollectionViewDataSource
协议。类型'ViewController'不符合协议'UICollectionViewDataSource'
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate
有关如何解决此问题的任何想法?
答
将协议定义添加到您的自定义类是不够的。你必须提供协议所需的功能。见协议的documenation,你必须至少实现:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {}
附注:
collectionView:numberOfItemsInSection:
collectionView:cellForItemAtIndexPath:
答
您必须在ViewController
类实现这个两分法 - 您的函数原型应该与上述函数完全匹配(删除任何'!'
,如果存在的话)
答
UICollectionViewDataSource有两个功能必须实现!(它们是协议的必需函数)。
要解决这个问题,只需要实现这样的两个功能:“!” enter image description here
对我来说是在cellForItemAtIndexPath函数中的每个参数之后 – Chris 2014-10-21 11:32:05
对于不执行所需的协议方法,默认行为似乎是一个红色错误,而在Objective-C中,Xcode只是给出了一个黄色警告。您必须至少删除所需的方法才能使错误消失。 – 2015-11-16 02:14:50