0

我有下面的代碼,它是一個簡單的地址簿,可以從Firebase數據庫中獲取姓名,電話和郵件。所有這一切都很完美,直到我添加了一個導航控制器來訪問導航欄和搜索功能。帶有Firebase數據庫的導航控制器和表格視圖

現在我的Tableview不會顯示數據庫中的任何東西,我不知道它是幹什麼的,但是它的Nav控制器阻塞了某些東西...請幫助!

更新!!:它沒有加載func cellForRow,女巫的原因意味着numberOfRows返回0 ...如果我插入一個剎車點,我可以看到Handle從數據庫中獲取一個名稱,所以它們仍然連接,干擾。

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) 
    }) 
} 
} 

回答

0

它似乎是ui更新問題。當您得到結果時,請異步更新ui組件。

你會試試嗎? (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() 
       */ 

      } 
     } 
    }) 
} 
相關問題