Je voudrais créer UICollectionView avec en-tête. Je règle Collection Reusable View sur mainStoryBoard mais rien n'est affiché sur l'appareil. J'ai essayé de chercher mais je n'ai pas pu trouver pourquoi il n'apparaissait pas. JePourquoi la vue réutilisable de la collection n'est pas affichée?
Story Board principal
Sur l'appareil
importation UIKit
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var collectionView: UICollectionView!
var images = ["medal1","medal2","medal3","medal4","medal5","medal6","medal7","medal8","medal9","medal10","medal1","medal2","medal3","medal14"]
var texts = ["hi","yes","hoo","such","hi","yes","hoo","such","hi","yes","hoo","such","hi","yes"]
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
collectionView.dataSource = self
}
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.myImage.image = UIImage(named: images[indexPath.row])
cell.achievementLabel.text = texts[indexPath.row]
return cell
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
}
import UIKit
classe pour la classe collection Voir CustomCell: UICollectionViewCell {
@IBOutlet weak var myImage: UIImageView!
@IBOutlet weak var achievementLabel: UILabel!
}
classe Collection réutilisables Voir importation UIKit
class CollectionReusableView: UICollectionReusableView {
@IBOutlet weak var reuseableVimage: UIImageView!
}
> import UIKit
class ViewController: UIViewController, UICollectionViewDelegate {
@IBOutlet weak var collectionView: UICollectionView!
var images = ["medal1","medal2","medal3","medal4","medal5","medal6","medal7","medal8","medal9","medal10","medal1","medal2","medal3","medal14"]
var texts = ["hi","yes","hoo","such","hi","yes","hoo","such","hi","yes","hoo","such","hi","yes"]
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionElementKindSectionHeader {
let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "HeaderView", for: indexPath)
// do any programmatic customization, if any, here
return view
}
fatalError("Unexpected kind")
}
}
Merci. J'ai mis à jour le code mais maintenant l'écran ne montre rien .. J'ai vérifié IB et les accessoires, tout va bien. – rebecca87
En supposant qu'il n'y ait pas d'avertissement, je pourrais vérifier le débogueur de vue et voir s'il y a des vues dans la vue de collection et quelles sont leurs images. S'il n'y a vraiment pas de vues, alors je définirais des points d'arrêt dans les méthodes 'UICollectionViewDataSource' et je verrais qu'elles sont appelées et quelles sont les valeurs qu'elles retournent. – Rob
Quand je mets collectionView.dataSource = self, il devient crush. – rebecca87