0

Ich habe den Code unten, es ist ein einfaches Adressbuch holt Name, Telefon und Mail von einer Firebase-Datenbank. Das alles funktionierte perfekt, bis ich einen Navigationscontroller hinzugefügt habe, um auf die Navigationsleiste und die Suchfunktion zuzugreifen.Navigations-Controller und Tabellenansicht mit Firebase-Datenbank

jetzt mein Tableview zeigt nichts aus der Datenbank, ich weiß nicht, was es tut, aber es ist der Nav-Controller, der etwas blockiert ... bitte helfen Sie !!

UPDATE !!: Es lädt nicht func cellForRow, was bedeutet, dass numberOfRows 0 zurückgibt ... Wenn ich einen brainpoint einfüge, kann ich sehen, dass Handle einen Namen von der Datenbank bekommt, damit sie noch verbunden sind, aber etwas i stören.

class TableVC: UITableViewController { 
var Telefonbog: [String] = [] 
var Handle: FIRDatabaseHandle? 
var Ref: FIRDatabaseReference? 
var searchController: UISearchController! 
var resultController = UITableViewController() 
static var _Mail = "" 
static var _Mobil = "" 
static var _Navn = "" 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    self.searchController = UISearchController(searchResultsController: self.resultController) 
    self.tableView.tableHeaderView = self.searchController.searchBar 
    Ref = FIRDatabase.database().reference() 
    Handle = Ref?.child("medarbejder EL").observe(.childAdded, with: { (snapshot) in 
     if let item = snapshot.value as? String 
     { 
      self.Telefonbog.append(item) 
      self.reloadInputViews() 
     } 
    }) 
} 

//opætning af telefonbog i tableview 
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return Telefonbog.count 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let bog = UITableViewCell(style: .default, reuseIdentifier: "bog") 
    bog.textLabel?.text = Telefonbog[indexPath.row] 
    return bog 
} 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 
    let currentcell = Telefonbog[indexPath.row] 
    Ref = FIRDatabase.database().reference() 
    Ref?.child("medarbejder EL").child(currentcell).observeSingleEvent(of: .value, with: { (snapshot) in 
     let value = snapshot.value as? NSDictionary 
     let Mail = (value?["Mail"] as? String)! 
     let Mobil = (value?["Mobil"] as? String)! 
     TableVC._Mail = Mail 
     TableVC._Mobil = Mobil 
     TableVC._Navn = currentcell 
     self.performSegue(withIdentifier: "kontakt", sender: self) 
    }) 
} 
} 

Antwort

0

Es scheint Ui Update-Problem sein. Wenn Sie das Ergebnis erhalten, aktualisieren Sie die ui-Komponenten asynchron.

Würden Sie das versuchen? (Swift 2.3)

// Move to a background thread to do some long running work 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
    Handle = Ref?.child("medarbejder EL").observe(.childAdded, with: { (snapshot) in 

     if let item = snapshot.value as? String 
     { //Update ui on main-thread 
      dispatch_async(dispatch_get_main_queue()) { 
       self.Telefonbog.append(item) 
       self.reloadInputViews() 
       /* 
       * I think your tableView refresh call in "reloadInputViews()" 
       * If not add this line. 
       * self.tableView.reloadData() 
       */ 

      } 
     } 
    }) 
} 
Verwandte Themen