J'ai créé un UICollectionViewCell personnalisé dans Interface Builder, lié des vues dessus à la classe, puis quand je veux utiliser et définir une chaîne sur l'étiquette de la chaîne, l'étiquette a une valeur nulle.
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
}
Et la cellule sous-classée:
class LeftMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
Réponses:
J'appelle à
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
nouveau. Si vous utilisez un storyboard, vous ne voulez pas l'appeler . Il écrasera ce que vous avez dans votre storyboard.Si le problème persiste, vérifiez s'il
reuseIdentifier
s'agit de la même chose dansdequeueReusableCellWithReuseIdentifier
et dansstoryboard
.la source
Supprimez simplement cette ligne:
la source
Si vous utilisez xib, assurez-vous que vous avez ajouté cette ligne de code à votre viewdidload.
Objectif c:
Rapide:
la source
Je dois enregistrer cette plume les gars!
la source
On dirait qu'il y a deux façons de s'inscrire et que j'utilisais la mauvaise la première. J'ai une vue xib personnalisée donc enregistrée avec la deuxième option, et nous avons des données!
1:
2:
la source
J'ai eu un problème similaire, mais mon erreur est que je n'ai pas délégué CollectionViewCell pour pouvoir modifier le texte de l'étiquette.
la source
Je pense que la meilleure solution est d'utiliser directement à partir du storyboard où ajouter un
CollectionView
, en alternative, vous devez supprimer unCollectionViewCell
de votreCollectionView
storyboard et enregistrer une cellule avec la commande suivante:la source