He creado un UICollectionViewCell personalizado en el Interface Builder, vistas agrupadas en él a la clase, y luego cuando quiero usar y establecer una cadena en la etiqueta de la cadena, esa etiqueta tiene un valor nulo.
override func viewDidLoad() { super.viewDidLoad() // Register cell classes 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 }
Y la celda subclase:
class LeftMenuCollectionViewCell: UICollectionViewCell { @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var label: UILabel! @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView! }
Estoy llamando self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
nuevo. Si está usando un guión gráfico, no quiere llamar a esto . Sobrescribirá lo que tienes en tu guión gráfico.
Si todavía tiene el problema, compruebe si reuseIdentifier
es el mismo en dequeueReusableCellWithReuseIdentifier
y en el storyboard
.
Solo elimina esta linea:
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
Si está utilizando xib, asegúrese de haber agregado esta línea de código a su viewdidload.
C objective:
[self.collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellWithReuseIdentifier:@"MyCellIdentifier"];
Rápido:
collectionView.register(UINib(nibName:"MyCell", bundle: nil), forCellWithReuseIdentifier:"MyCellIdentifier")
¡Tengo que registrar esa semilla chicos!
collectionView.register(UINib(nibName: "CustomCell", bundle: nil), forCellWithReuseIdentifier: "CustomCellId")
Tuve un problema similar, pero mi error fue que no delegué CollectionViewCell para poder cambiar el texto de la etiqueta.