2017-01-26 4 views
0
class TableController: UIViewController { 

    @IBOutlet var ListTable: UITableView! 

    var list: [Dictionary<String, String>] = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let ListTable = UITableView(frame: view.bounds) 
     self.ListTable = ListTable 

     ListTable.dataSource = self 
     ListTable.delegate = self 

     initList() 
    } 


    func initList() { 
      // get list from firebase 
      self.ListTable.reloadData() 
    } 

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let item = self.list[indexPath.row] 
     let cellIdentifier = "ListCell" 

     let cell = CustomCell(style: .default, reuseIdentifier: cellIdentifier) 

     cell.foodLabel?.text = item["Banana"] 

     return cell 
    } 
} 

extension QueueController: UITableViewDataSource, UITableViewDelegate { 

} 

CustomCell Klasse:Daten zeigt sich nicht in UITableView

import UIKit 

class CustomCell: UITableViewCell 
{ 

    @IBOutlet weak var foodLabel: UILabel! 

    override func awakeFromNib() 
    { 
     super.awakeFromNib() 
    } 
} 

Meine Daten von Feuerbasis ordnungsgemäß geladen. Auf dem Storyboard habe ich einen normalen View-Controller, in den ein UITableView eingebettet ist. Diese Tabellenansicht ist meinem IBOutlet für meine ListTable gefallen. In der Tabelle befindet sich eine Zelle mit 3 Labels. Diese Zelle hat den Bezeichner ListCell und ihre Klasse lautet CustomCell.

Edit: Es gibt keinen Fehler, aber meine Daten werden nicht angezeigt.

+0

, was der Code tut, die das Modell lädt (dh 'list') aussehen ? –

Antwort

1

Dies liegt daran, Ihre benutzerdefinierte Zelle nicht richtig dequeue . Versuchen Sie dieses

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cellIdentifier = "ListCell" 
     var cell : ListCell? = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as! ListCell? 
     if (cell == nil) { 

      cell = Bundle.main.loadNibNamed("ListCell", owner: nil, options: nil)?[0] as? ListCell 
     } 


     cell?.backgroundColor = UIColor.clear 
     cell?.contentView.backgroundColor = UIColor.clear 

     return cell! 
    } 
+0

Mit 'ListCell' meinst du' CustomCell'? Oder meinst du, ich muss einen neuen Zelltyp erstellen? – user25093

+0

Ja ListCell bedeutet Ihre CustomCell. –

+0

Ich habe keine Nib namens "List Cell", wie kann ich eine Feder erstellen? Oder erstellt es automatisch? Ich habe Ihren Code ausprobiert und es hat nicht funktioniert. – user25093

1

Vielleicht versuchen Sie Ihre Zelle in viewDidLoad

ListTable.register(UINib(nibName: "CustomCell", bundle: Bundle.main), forCellReuseIdentifier: "ListCell") //this is assuming that your nib is named "CustomCell" 

Auch die Registrierung für das Protokoll, sollten Sie Kamel-Fall Konventionen folgen und benennen Sie Ihre UITableView listTable

+0

Wie kann ich eine Feder namens CustomCell erstellen? Wo sollte diese Datei leben und braucht sie 'foodLabel'? – user25093

0

Sie haben nie die Tableview zu Ihrer Ansicht hinzufügen ... (oder ein Teil gehen der Code fehlt)