2017-07-11 6 views
-2

Ich versuche, das Titellabel in meiner Tabellenansichtzelle anzuzeigen, aber beim Ausführen wird nichts angezeigt. Ich habe auch versucht, ein Standard-Etikett in die Zelle zu setzen, aber es verschwindet, wenn ich es benutze.UITableView Zelleninhalt wird nicht schnell angezeigt

import UIKit 
import Firebase 
import FirebaseDatabase 
import SDWebImage 

struct postTry { 
    let title : String! 
} 

class CarMakeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
    var posts = [postTry]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let ref = Database.database().reference().child("Posts") 

     ref.observeSingleEvent(of: .value, with: { snapshot in 
      print(snapshot.childrenCount) 

      for rest in snapshot.children.allObjects as! [DataSnapshot] { 
       guard let value = rest.value as? Dictionary<String,Any> else { continue } 

       guard let title = value["Title"] as? String else { continue } 

       let post = postTry(title: title) 

       self.posts.append(post) 
      } 

      self.posts = self.posts.reversed(); 
      self.tableView.reloadData() 
     }) 
    } 

    @IBOutlet weak var tableView: UITableView! 

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cellMake") 

     let label1 = cell?.viewWithTag(21) as! UILabel 
     label1.text = posts[indexPath.row].title 

     return cell! 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "makemodel" { 
      if let indexPath = tableView.indexPathForSelectedRow { 
       let destVC = segue.destination as! DetailNewsViewController 
       destVC.titleText = posts[indexPath.row].title 

      } 
     } 
    } 
} 
+0

Erstellen Sie eine separate .xib Datei zu delegieren, wo Sie eine neue Tabelle Ansicht Zelle erstellen, die Ihre Zelle und Etikett hält. – AGrammerPro

Antwort

1

der Versuch nach der ersten: Ihre cellForRowAt Methode dies ändern:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCell(withIdentifier: "cellMake", for: indexPath) as! UITableViewCell 
    let post = posts[indexPath.row] 
    cell.textLabel.text = post.title 

    return cell 
} 

Wenn Sie Ihren Tableview korrekt eingerichtet haben, und Sie sind sicher, dass Sie die Objekte aus Firebase erhalten, sollte diese Arbeit .

Lassen Sie mich wissen, ob dies geholfen hat.

1

Sie benötigen eine Tableview auf Ihrer Viewcontroller Klasse

tableView.delegate = self 
tableView.datasource = self 
Verwandte Themen