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": mais quand j'ajouterai "paresseux var". est parti. Je ne sais pas pourquoi? Quelqu'un peut-il expliquer pour moi? P>
3 Réponses :
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 }()
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. P>
lazy var collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionView.delegate = self collectionView.dataSource = self return collectionView }()
Dupliqué possible de Qu'est-ce que le sens paresseux à Swift?