Ich habe im Interface Builder eine benutzerdefinierte UICollectionViewCell erstellt, Ansichten daran an die Klasse gebunden. Wenn ich dann eine Zeichenfolge für die Beschriftung der Zeichenfolge verwenden und festlegen möchte, hat diese Beschriftung den Wert Null.
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
}
Und die untergeordnete Zelle:
class LeftMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
Antworten:
Ich rufe
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
wieder an. Wenn Sie ein Storyboard verwenden, möchten Sie dies nicht aufrufen . Es wird überschreiben, was Sie in Ihrem Storyboard haben.Wenn Sie immer noch das Problem überprüfen , ob
reuseIdentifier
ist dieselbe indequeueReusableCellWithReuseIdentifier
und instoryboard
.quelle
Entfernen Sie einfach diese Zeile:
quelle
Wenn Sie xib verwenden, stellen Sie sicher, dass Sie diese Codezeile zu Ihrem viewdidload hinzugefügt haben.
Ziel c:
Schnell:
quelle
Muss die Feder Jungs registrieren!
quelle
Es gibt anscheinend zwei Möglichkeiten, sich zu registrieren, und ich habe zuerst die falsche verwendet. Ich habe eine benutzerdefinierte xib-Ansicht, die mit der zweiten Option registriert ist, und wir haben Daten!
1:
2:
quelle
Ich hatte ein ähnliches Problem, aber mein Fehler war, dass ich CollectionViewCell nicht delegiert habe, um den Beschriftungstext ändern zu können.
quelle
Ich denke, dass die beste Lösung darin besteht, direkt aus dem Storyboard zu verwenden, wo ein hinzugefügt
CollectionView
wird. Alternativ müssen Sie ein entfernenCollectionViewCell
aus IhremCollectionView
Storyboard und eine Zelle mit dem folgenden Befehl registrieren:quelle