Je souhaite configurer l'en-tête de la vue de collection et implémenter ainsi la méthode func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView
.Pourquoi l'instruction "switch" ne fonctionne-t-elle pas dans la définition de l'en-tête de UICollectionView?
Cependant, il semble que l'instruction du commutateur ne fonctionne pas; Même lorsque j'ai essayé de définir l'étiquette dans la vue d'en-tête en dérivant en fonction de la section, la vue d'en-tête résultante dans toutes les sections a toutes les étiquettes que j'ai écrites.
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "Header", forIndexPath: indexPath)
let headerLabel = UILabel(frame: CGRectMake(2, 8, 120, 24))
headerView.addSubview(headerLabel)
print(indexPath.section)
switch (indexPath.section) {
case 0:
headerLabel.text = "A"
return headerView
case 1:
headerLabel.text = "B"
return headerView
default:
break
}
return headerView
default:
assert(false, "Unexpected element kind")
}
}
Dans le code ci-dessus, les label de deux sections a à la fois l'étiquette A et B, se chevauchent les uns les autres.
Pourquoi le commutateur ne fonctionne-t-il pas dans mon cas?
Le contenu de ma collection affiche les données du serveur, et le print(indexPath.section)
est exécuté 2 fois, chacune imprimant 0
et 1
, dans cet ordre.
Est-ce lié au problème?