2017-02-19 45 views
0

ich eine Tabelle erschaffe, und diesen Code mit den Zellen zu erzeugen:Tabellenansicht Zelle von benutzerdefinierten Klasse Rückkehr null

let cell2:iPRoutineSpecificCell = self.routineSpecificsTable.dequeueReusableCell(withIdentifier: "Cell2") as! iPRoutineSpecificCell 

Die Zelle ein Etikett enthält. Wenn ich

sagen
cell2.label.text = "Test" 
return cell2 

bekomme ich den Fehler:

fatal error: unexpectedly found nil while unwrapping an Optional value

ich diese genaue Anordnung an anderer Stelle in der App haben und es funktioniert gut. Warum funktioniert es diesmal nicht? Der einzige Unterschied zwischen den beiden Ansichten besteht darin, dass dieser zwei Tabellen enthält. Wenn ich jedoch:

cell2.textLabel?.text = "Test" 

Dann funktioniert es.

Jede Hilfe wird geschätzt!

+0

können Sie zeigen, 'iPRoutineSpecificCell' definieren? –

+1

Sie müssen Ihr Etikett mit iPRoutineSpecificCell verbinden – DiegoQ

+0

@DiegoQ Ich habe das Etikett verbunden (glaube ich) - Sie meinen, die Alt + ziehen und verbinden als Steckdose in die Datei? – ZiEiTiA

Antwort

3

Bitte entfernen Sie diese Zeile aus viewDidLoad Methode, wenn Sie haben-:

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") 
0

textLabel ist ein natives Feld von UITableViewCell. Es ist als ein Optional definiert, und deshalb wird es nicht abstürzen, wenn der von Ihnen festgelegte Text Null ist.

Das benutzerdefinierte Label, das Sie festlegen, ist wahrscheinlich als ein nicht optionales Label (wahrscheinlich ein IBOutlet) definiert. Stellen Sie sicher, dass Sie das Etikett korrekt an Ihr Storyboard anschließen, indem Sie das Etikett an die richtige Steckdose ziehen.

+0

Im Code, der funktioniert (mit einer Tabelle und einer benutzerdefinierten Zelle) werden die Beschriftungen als IBOutlets definiert. Der Code, der funktioniert und der Code, der nicht funktioniert, ist identisch mit der Tatsache, dass der Code, der nicht funktioniert, 2 Tabellen enthält. Die Etiketten, die ich nicht verwenden kann, sind auch als IBOutlets definiert. – ZiEiTiA

+0

Verwalten Sie die 2 Tabellen im selben Code? 1. Stellen Sie sicher, dass beide Tabellen verbunden sind. 2. Überprüfen Sie innerhalb der Tabelle Delegaten (und Datenquelle) Methoden, die Sie arbeiten mit der richtigen Tabelle, die die benutzerdefinierte Zelle entsprechend definiert. – Lirik

+0

Ich weiß, dass es sich auf die richtige Tabelle bezieht, da der eingebaute textLabel.text funktioniert. Ich habe auf die Zelle in der Tabelle geklickt und die Klasse auf die benutzerdefinierte Klasse gesetzt, die ich für die Zellen verwende - das ist alles, was ich tun muss? – ZiEiTiA

0

Sie benötigen eine individuelle Zelle registrieren als:

tableView.registerNib(UINib(nibName: "Your Nib Name", bundle: nil), forCellWithReuseIdentifier: "Your Cell Identifier") 
+0

Sie brauchen nicht, wenn Sie Storyboard verwenden. – vadian

Verwandte Themen