Perché l’uscita di UICollectionViewCell è nulla?

Ho creato un UICollectionViewCell personalizzato in Interface Builder, le viste associate alla class, e poi quando voglio usare e impostare una stringa sull’etichetta sulla stringa, l’etichetta ha un valore nullo.

override func viewDidLoad() { super.viewDidLoad() // Register cell classs self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls") } override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! { var cell: LeftMenuCollectionViewCell cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell println(cell.label) // <- this is nil, why?? cell.label.text = "asd" return cell } 

E la cella sottoclass:

 class LeftMenuCollectionViewCell: UICollectionViewCell { @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var label: UILabel! @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView! } 

Sto chiamando self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls") . Se stai usando uno storyboard non vuoi chiamarlo . Sovrascriverà ciò che hai nel tuo storyboard.

Se hai ancora il problema, controlla se reuseIdentifier è uguale in dequeueReusableCellWithReuseIdentifier e nello storyboard .

Basta rimuovere questa riga:

 self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls") 

Se stai usando xib, assicurati di aver aggiunto questa riga di codice al tuo viewdidload.

Obiettivo C:

 [self.collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellWithReuseIdentifier:@"MyCellIdentifier"]; 

Swift:

 collectionView.register(UINib(nibName:"MyCell", bundle: nil), forCellWithReuseIdentifier:"MyCellIdentifier") 

Devo registrare quel tipo di pennino!

 collectionView.register(UINib(nibName: "CustomCell", bundle: nil), forCellWithReuseIdentifier: "CustomCellId") 

Ho avuto un problema simile, ma il mio errore è stato che non ho delegato CollectionViewCell a modificare il testo dell’etichetta.