Тип 'ViewController' не соответствует протоколу 'UICollectionViewDataSource'
Я следую учебнику, в котором с помощью UIPickerController
работает камера. Однако при реализации UICollectionViewDatsaSource
возникает ошибка, ViewController
что ViewController
не соответствует протоколу UICollectionViewDataSource
.
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate
Любая идея о том, как исправить эту проблему?
Ответы
Ответ 1
Вы должны реализовать этот два метода в своем классе ViewController
:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {}
PS - Ваш прототип функции должен точно соответствовать вышеуказанным функциям. (Удалите все '!'
Если они есть)
Ответ 2
Недостаточно добавить определение протокола в свой собственный класс. Вы должны предоставить необходимые функции протокола. См. Документацию протокола, вы должны реализовать как минимум:
collectionView:numberOfItemsInSection:
collectionView:cellForItemAtIndexPath:
Ответ 3
Вы должны реализовать эти два метода в своем классе ViewController для Collection View:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
<#code#>
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
<#code#>
}
Ответ 4
UICollectionViewDataSource имеет две функции, которые должны быть реализованы! (Они являются обязательными функциями протокола).
Чтобы исправить эту проблему, просто выполните две функции следующим образом: введите описание изображения здесь