2014-09-26 108 views
13

我正在学习使用UIPickerController来操作摄像头的教程。但是,在执行UICollectionViewDatsaSource时,出现错误,说明ViewController不符合UICollectionViewDataSource协议。类型'ViewController'不符合协议'UICollectionViewDataSource'

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

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

回答

2

将协议定义添加到您的自定义类是不够的。你必须提供协议所需的功能。见协议的documenation,你必须至少实现:

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

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

附注:

collectionView:numberOfItemsInSection: 
collectionView:cellForItemAtIndexPath: 
25

您必须在ViewController类实现这个两分法 - 您的函数原型应该与上述函数完全匹配(删除任何'!',如果存在的话)

+1

对我来说是在cellForItemAtIndexPath函数中的每个参数之后 – Chris 2014-10-21 11:32:05

+0

对于不执行所需的协议方法,默认行为似乎是一个红色错误,而在Objective-C中,Xcode只是给出了一个黄色警告。您必须至少删除所需的方法才能使错误消失。 – 2015-11-16 02:14:50

-1

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

要解决这个问题,只需要实现这样的两个功能:“!” enter image description here

相关问题