2016-04-24 5 views
1

Ich habe einen TableViewController und statische Zellen darin; und ich versuche, einer der Zellen eine Klasse zu geben und sie mit dequeueReusableCellWithIdentifier zu erkennen. Ich benutze ..`Kann eine Zelle mit dem Bezeichner MyCell nicht entfernen '

class MyCell: UITableViewCell { 

} 

enter image description here

enter image description here

enter image description here

enter image description here

Aber wenn ich diese verwenden stürzt

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as! MyCell 
} 

unable to dequeue a cell with identifier MyCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

+0

in 'viewDidLoad', haben Sie' tableView.registerClass (MyCell.self, forCellReuseIdentifier: "MyCell") '? Haben Sie übrigens eine NIB-Datei für Ihre benutzerdefinierte Zelle erstellt? Wenn Sie dies getan haben, müssen Sie stattdessen 'tableView.registerNib (nib: forCellReuseIdentifier:)' aufrufen. – ozgur

+0

Es ist auf dem Main.StoryBoard. Ich habe keine separate Nib-Datei erstellt. Ich habe versucht, Ihren Code auf meinem viewDidLoad hinzuzufügen. Jetzt stürzt es in derselben Zeile ab, dauert aber etwas länger (2 Sekunden länger) und stürzt dann ab ..:/Was könnte das Problem sein? – senty

+0

Sie verwenden static tableView, Sie müssen statische Tabellenansichtszellen nicht entfernen. mach einfach einen Outlet zu deinem ViewController und das wars. –

Antwort

2

Das Problem ist, dass Sie versuchen, Zelle DEQUE in

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

} 

nie deque Zellen außerhalb von tableView:cellForRowAtIndexPath:

Wenn Sie eine Instanz der Zelle möchten, können Sie kann einfach

tableView.cellForRowAtIndexPath(indexPath) 
verwenden

Das wird das Problem lösen.

+0

Also sollte ich nur 'tableView.cellForRowAtIndexPath (indexPath)' in 'geschätztHeightForRowAtIndexPath' schreiben? Ich habe nicht verstanden, was ich tun soll. Ist das Problem bei der Verbindung mit der Steckdose? Ich konnte den Check nicht innerhalb von 'tableView: cellForRowAtIndexPath' durchführen, deshalb habe ich diesen Ansatz versucht. – senty

+1

Ja. '' 'deque''' wird verwendet, wenn die Zelle erstellt oder wiederverwendet wird. Wenn Sie eine Referenz der Zelle möchten, rufen Sie einfach die obige Methode auf. – Varun

+0

Ah, um der Klarheit willen, für statische Zellen sollte ich nicht 'cellForRowAtIndexPath' verwenden, nur für dynamische Zellen .. Ich verwendete stattdessen @IBOutlet Ansatz – senty