web-dev-qa-db-ja.com

タイプ「ViewController」がプロトコル「UICollectionViewDataSource」に準拠していません

UIPickerControllerを使用してカメラを操作するチュートリアルに従っています。ただし、UICollectionViewDatsaSourceを実装すると、ViewControllerUICollectionViewDataSourceプロトコルに準拠していないというエラーが表示されます。

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

この問題を解決する方法について何か考えはありますか?

15
RPMouton

この2つのメソッドをViewControllerクラスに実装する必要があります。

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

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

追伸-関数のプロトタイプは上記の関数と正確に一致する必要があります。('!' 存在する場合)

32
Aks

これらの2つのメソッドを、コレクションビューのViewControllerクラスに実装する必要があります。

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    <#code#>
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    <#code#>
}
3
Hemant Gupta

カスタムクラスにプロトコル定義を追加するだけでは不十分です。プロトコルに必要な機能を提供する必要があります。プロトコルのドキュメントを参照してください。少なくとも実装する必要があります。

collectionView:numberOfItemsInSection:
collectionView:cellForItemAtIndexPath:
2
zisoft

UICollectionViewDataSourceには2つの関数を実装する必要があります(これらはプロトコルの必須関数です)。

問題を解決するには、次のように2つの関数を実装します。 ここに画像の説明を入力

0
渠晓友