Тип '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 имеет две функции, которые должны быть реализованы! (Они являются обязательными функциями протокола).

Чтобы исправить эту проблему, просто выполните две функции следующим образом: введите описание изображения здесь