J'ai un UICollectionView
que j'ai ajouté à mon UIViewController
dans mon Storyboard.cellForItemAtIndexPath jamais appelé
Il contient un UICollectionViewCell
de la classe BookCell
et l'identificateur réutilisable BookCell
.
bookArray
est transmis dans la méthode prepareForSegue
de la ViewController précédente
cellForItemAtIndexPath
ne sera jamais appelé. J'ai essayé de déclarer BookCollectionVC
en tant que délégué et dataSource à la fois dans Storyboard et dans viewDidLoad
, comme vous pouvez le voir commenté, mais cela ne change rien.
J'ai lu plusieurs réponses SO relatives à la taille de la cellule, au nombre d'éléments dans la section, aux multiples façons de déclarer delegate
et dataSource
et j'ai essayé/vérifié toutes les réponses.
Des idées?
class BookCollectionVC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var collection: UICollectionView!
var bookArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// collection.delegate = self
// collection.dataSource = self
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("BookCell", forIndexPath: indexPath) as? BookCell {
// This never gets called
let bookIsbn = bookArray[indexPath.row]
cell.configureCell(bookIsbn)
return cell
} else {
return UICollectionViewCell()
}
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print(bookArray.count)
return bookArray.count
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
let cellWidth = screenWidth/4
return CGSizeMake(cellWidth,cellWidth)
}
pouvez-vous s'il vous plaît vérifier les éléments dans le tableau 'bookArray'? – deoKasuhal
Que voulez-vous dire vérifier les éléments 'into'? @Dev –
S'il n'y a pas d'éléments dans 'bookArray', alors' cellForItemAtIndexPath' ne sera jamais appelé. Dans l'exemple de code, vous avez assigné 'bookArray' comme tableau vide. Vous devez vous assurer que 'bookArray' a un objet pour que la méthode' cellForItemAtIndexPath' soit en cours d'exécution. – deoKasuhal