0
votes

Pourquoi je reçois une erreur "Impossible d'attribuer une valeur de type (classe) à tapisser Uicollectionviewelegate, UicollectionviewdataSource?"

Quand je déclare la vue de la collection, j'ai eu une erreur "Impossible d'attribuer une valeur de type (classe) à tapisser Uicollectionviewelegate, uicollectionvievatasource": xxx

mais quand j'ajouterai "paresseux var". est parti. Je ne sais pas pourquoi? Quelqu'un peut-il expliquer pour moi? xxx


1 commentaires

3 Réponses :


1
votes

que la fermeture est appelée lors de l'initialisation, vous ne pouvez donc pas utiliser de propriétés ou méthodes de l'instance. Si vous avez besoin d'accéder à vous-même, vous devez remplacer le letter avec Var paresseux.

let collectionView: UICollectionView = {
   let layout = UICollectionViewFlowLayout()
   let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
   collectionView.delegate = self // You cannot use
   collectionView.dataSource = self // You cannot use
   return collectionView 
}()


0 commentaires

0
votes

Ajout de forces paresseuses iOS à vérifier l'instanciation de la collectionView uniquement lorsqu'il est nécessaire pour la première fois. Il ne vous donne donc pas une erreur à la compilation. Avant cela, il donnait une erreur car l'initialisation devait être terminée et vous étiez des propriétés sur le même.


0 commentaires

3
votes
lazy var collectionView: UICollectionView = {
    let layout = UICollectionViewFlowLayout()
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    return collectionView
}()

0 commentaires