麻烦:无法从其dataSource获取单元格

时间:2016-10-19 17:08:50

标签: ios swift firebase tableview firebase-realtime-database

Attached screenshot for issue 尝试使用表格视图显示。我一直收到错误:

  

无法从其dataSource获取单元格     class List:UITableViewController {

  var users = [user]()


override func viewDidLoad() {
       let databaseRef = FIRDatabase.database().reference()
   databaseRef.child("Users").queryOrderedByKey().observe(.childAdded, with: {
   snapshot in
   print(snapshot)


    let addNote = (snapshot.value as? NSDictionary)?["addNote"] as? String ?? ""
    let uid = (snapshot.value as? NSDictionary)?["uid"] as? String ?? ""
       self.users.append(user(addNote: addNote,uid: uid))
        self.tableView.reloadData()
          print(self.users)
 })

    }

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       print("Test\(users.count)")
       return users.count
        }


 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
    let nameLbl = cell?.viewWithTag(2) as! UILabel
    nameLbl.text = self.users[indexPath.row].addNote
    return cell!

   }

2 个答案:

答案 0 :(得分:0)

你将不得不deque tableviewcells

   func tableView(_ tableView: UITableView, cellForRowAt indexPath:          IndexPath) -> UITableViewCell {
   let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) as! UITableViewCell
  return cell
}

答案 1 :(得分:-1)

好吧...据我所知,你的tableViewCell有单独的.xib文件,而不是原型单元,因为你在使用之前尝试用tableview注册你的nib。因此,为了正确发生这一点,您需要确保一些事情:

  1. 您已在.xib文件中为tableView单元格指定了标识符。
  2. 您可以使用该标识符来注册该单元格,例如。

    让nib = UINib(nibName:“MyTableViewCell”,捆绑:nil)
            self.tableView.registerNib(nib,forCellReuseIdentifier:“abc”)

  3. 这里,“abc”是标识符。

    1. 然后,在cellForRowAtIndexPath委托中,

      让cell = tableView.dequeueReusableCellWithIdentifier(“abc”,forIndexPath:indexPath)为! MyTableViewCell

    2. 我认为你应该使用上面的步骤注册nib然后deque它。它应该工作正常。