2014-09-26 19 views
13

Sto seguendo un tutorial in cui si utilizza UIPickerController per utilizzare la fotocamera. Tuttavia, quando si implementa UICollectionViewDatsaSource, viene visualizzato un errore che indica che ViewController non è conforme al protocollo UICollectionViewDataSource.Il tipo 'ViewController' non è conforme al protocollo 'UICollectionViewDataSource'

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

Qualche idea su come risolvere questo problema?

risposta

2

L'aggiunta della definizione del protocollo alla classe personalizzata non è sufficiente. Devi fornire le funzioni richieste del protocollo. Vedere la documenation del protocollo, è necessario implementare almeno:

collectionView:numberOfItemsInSection: 
collectionView:cellForItemAtIndexPath: 
25

è necessario implementare questi due metodo nella ViewController classe:

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

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

P.S. - Il tuo prototipo di funzione deve corrispondere esattamente alle funzioni di cui sopra (rimuovere eventuali '!' se presenti)

+1

per me è stato il dopo ogni argomento nella funzione cellForItemAtIndexPath – Chris

+0

Sembra che con Swift il comportamento predefinito sia un errore rosso per non implementare i metodi di protocollo richiesti, mentre in Objective-C Xcode viene visualizzato un avviso giallo. Devi almeno eliminare i metodi richiesti per far sparire l'errore. –

-1

UICollectionViewDataSource ha due funzioni da implementare! (Sono richieste le funzioni del protocollo).

per risolvere il problema, basta implementare le due funzioni in questo modo: '!' enter image description here

Problemi correlati