Label Outlet Auf Benutzerdefinierte UICollectionViewCell In Swift Verursachen Optional.Keine Absturz
Ich habe eine collectionViewController, die ich anzeigen möchten, die eine Reihe von benutzerdefinierten UICollectionViewCells mit einigen labels auf Sie. Leider immer wenn ich versuche und auf die benutzerdefinierten UICollectionViewCell-label, verursacht es einen Absturz mit:
Konsole
schwerwiegender Fehler: Kann nicht entpacken Optional.Keine
Fenster
Thread1: EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0)
Ich versuche, auf das label etwa so:
cell.name.text = names[indexPath!.item]
Vielleicht kommt aus meiner Steckdose label zu null? Aber die Suche nach Antworten hat nichts geklappt, und da bin ich nicht wirklich sicher, was das Problem ist, hinzufügen ?/! in meinem code nicht wirklich helfen.
MyCustomUICollectionViewController
class ScrambledTextCollectionViewController: UICollectionViewController {
var names: String[] = ["Anna", "Alex", "Brian", "Jack"]
override func viewDidLoad() {
super.viewDidLoad()
//Register cell classes
self.collectionView.registerClass(MyCustomCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
}
override func numberOfSectionsInCollectionView(collectionView: UICollectionView?) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView?, numberOfItemsInSection section: Int) -> Int {
return names.count
}
override func collectionView(collectionView: UICollectionView?, cellForItemAtIndexPath indexPath: NSIndexPath?) -> UICollectionViewCell? {
var cell = collectionView?.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as MyCustomCollectionViewCell
cell.name.text = names[indexPath!.item]
return cell
}
}
MyCustomCollectionViewCell
class MyCustomCollectionViewCell: UICollectionViewCell {
@IBOutlet var name: UILabel
init(frame: CGRect) {
super.init(frame: frame)
}
}
- Welche Zeile wird der Fehler auf? Haben Sie einen exception breakpoint, um zu versuchen, um herauszufinden, wo der Fehler ist?
- Zelle.name.text = Namen[indexPath!.item] bekommt eine Thread1: EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0)
- Vielleicht bin ich dumm, aber Sie haben nicht definiert, die
var names
außerhalb des Anwendungsbereichs derviewDidLoad
. Sicherlich sollten Sie definieren den var...var names
im Rahmen des gesamten Objekts nicht nur viewDidLoad. - Ah Hoppla, das ist, weil ich habe vereinfacht den code für Stack-Überlauf und das array sollte nicht eingestellt werden, es, ich werde es zu beheben, aber es ist nicht das Problem.
- "Vielleicht kommt aus meiner Steckdose label zu null?" Wenn
cell.name
ist in der Tatnil
, ist das dein problem. Können Sie melden Sie Ihren Wert direkt vor Ihrem Absturz line? - println(cell.Wort), wird nil zurückgegeben, so dass Sie scheinen auf die Antwort, aber wie/wo würde ich es nicht null?
- Versuchen Sie ersetzen Ausrufezeichen-Frage-tag-Namen[indexPath?.Artikel]
- Glaube ich nicht, das würde mein Problem behoben, es stürzt ab selbst wenn ich direkt die Bezeichnung der Zelle.name.text = "Hallo". Was mich verwirrt ist, dass ich gemacht habe eine UITableView verwenden Sie eine custom UITableViewCell in viel die gleiche Weise, ohne Frage.
- ich habe das gleiche Problem, mein label und Bildansicht ist die Rückgabe nil aus einer benutzerdefinierten collection-Zelle. Ich habe überprüfen Sie die Verbindung und Klasse name korrekt ist, aber kein Glück. jede Lösung, jeder?
- Dies ist so einfach, aber ich kann es nicht funktionieren. Swift gibt die die MAUERSEGLER !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Antwort hier
Entfernen
self.collectionView.registerClass(MyCustomCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
Lesen link für detaillierte Grund, warum