2017-12-15 6 views
-1

Ich habe eine iOS App, wo ich eine UITableView zu meiner Ansicht in Interface Builder hinzugefügt habe. Dann stelle ich die Tableview in der UIViewController so zusammen:Tableview-Methoden werden nie aufgerufen

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 50 
tableView.delegate = self 
tableView.dataSource = self 
tableView.contentInset = UIEdgeInsets(top: 25, left: 0, bottom: 0, right: 0) 

Und ich implementiert auch die folgenden Methoden:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    print("test table") 
    let course = self.courses[indexPath.row] 
    let cell = tableView.dequeueReusableCell(withIdentifier: CourseTableViewCell.identifier, for: indexPath) as! CourseTableViewCell 

    cell.make(course, location: self.currentLocation) 

    return cell 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return courses.count 
} 

Allerdings sind die Methoden nie genannt wird, wird die Tabellenansicht nicht angezeigt und ich bekomme keine fehler in meiner konsole? Gibt es etwas, das ich vermisst habe, als ich versuchte, das hinzuzufügen?

Danke.

Wie pro Antrag in den Kommentaren:

  • Die courses Array ist nicht leer
  • Die courses Array vor reloadData() gefüllt wird
+0

Haben Sie den TableView mit dem Code als IBOutlet verknüpft? –

+0

@ReinierMelian Ja, es ist verbunden: '@IBOutlet schwach var tableView: UITableView!' –

+0

Wo rufst du 'tableView.ReloadData()'? – vadian

Antwort

1

Versuchen Sie diese statt Code:

@IBOutlet weak var tableView: UITableView!{ 
    didSet{ 
      self.tableView.delegate = self 
      self.tableView.dataSource = self 
      } 
    } 

sicherstellen, dass Ihr Controller für die beiden Protokolle konform ist:

UITableViewDelegate,UITableViewDataSource 

diese Methode hinzufügen, um sicherzustellen, dass Ihre Zellen nicht mit 0 pts Höhe:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return 80 // adjust height of row upon need 
    } 
+1

Ein Objektbeobachter für eine Steckdose ist kein guter Vorschlag.Am geeignetsten ist es, Datenquelle und Delegate in Interface Builder zu verbinden – vadian

1

nur versuchen, zu Arbeitsgeräte "heightForRowAtIndexPath" Ich denke, Ihre Tabelle wurde ordnungsgemäß neu geladen, aber aufgrund von Einschränkungen in Zelle funktioniert UITableViewAutomaticDimension nicht. 2 - sicher Kurse machen richtig zugeordnet, verwenden Debugger in numberOfRowsAtIndexPath Artikel in Kursen überprüfen

0

Sie sollten testen, ob die Delegatmethoden ausgeführt werden durch einen Haltepunkt in einem Verfahren wie numberOfSections oder numberOfRowsInSection Einstellung.

Wenn der Haltepunkt nicht getroffen wird, sind die Delegierten nicht richtig eingestellt.

+0

sind. Der Haltepunkt wird erreicht –

+0

Wie hoch ist die Anzahl/Länge der Kurse in der Methode numberOfRows? – Milander

Verwandte Themen