Je souhaite définir UICollectionViewLayout pour mon UICollectionView mais lorsque la couche est définie, la fonction cellForItemAt n'est pas appelée. Je ne comprends pas pourquoi. Mon UICollectionView est dans un XIB, avec ce code pour tester la UICollectionViewLayout:Lorsque UICollectionViewLayer est défini, cellForItemAt n'est pas appelé
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
xibSetup()
self.collectionView.register(UINib(nibName: "StepCell", bundle: nil), forCellWithReuseIdentifier: stepCellIdentifier)
self.collectionView.delegate = self
self.collectionView.dataSource = self
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 3
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 100
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let lCell = collectionView.dequeueReusableCell(withReuseIdentifier: stepCellIdentifier, for: indexPath) as? StepCell {
lCell.text.text = indexPath.row.description
return lCell
}
return UICollectionViewCell()
}
J'ai une coutume UICollectionViewCell dans un autre xib et voici ma classe UICollectionViewLayout:
class DetailGroupCollectionviewLayout: UICollectionViewLayout {
let CELL_HEIGHT = 30.0
let CELL_WIDTH = 100.0
var cellAttrsDictionary = Dictionary<IndexPath,UICollectionViewLayoutAttributes>()
var contentSize = CGSize.zero
override var collectionViewContentSize: CGSize {
return self.contentSize
}
override func prepare() {
if let lCollectionView = self.collectionView {
if lCollectionView.numberOfSections > 0 {
for section in 0...lCollectionView.numberOfSections - 1 {
if lCollectionView.numberOfItems(inSection: section) > 0 {
for item in 0...lCollectionView.numberOfItems(inSection: section) - 1 {
let cellIndex = IndexPath(item: item, section: section)
let xPos = Double(item) * CELL_WIDTH
let yPos = Double(section) * CELL_HEIGHT
let cellAttributes = UICollectionViewLayoutAttributes(forCellWith: cellIndex)
cellAttributes.frame = CGRect(x: xPos, y: yPos, width: CELL_WIDTH, height: CELL_HEIGHT)
cellAttributes.zIndex = 1
cellAttrsDictionary[cellIndex] = cellAttributes
}
}
}
}
}
}
}
J'ai essayé d'avoir tout sur le UICollectionView dans le storyboard parce que je pensais qu'un xib "bug" mais cela ne résout rien.
Il y a une chose que je ne fais pas correctement ou une particularité? Je suis perdu.
Je suis sur Xcode 8.3 avec Swift 3.1 et mon application est sur iOS 10.