ios - 不调用索引路径行的空 TableView 单元格

标签 ios arrays swift uitableview

除行索引路径的单元格外,所有 TableView 函数均正常工作。

问题可能是 foods 数组为空,因此行数为 0,因此未调用索引路径处行的单元格

@IBOutlet weak var foooods: UITableView!
var databaseref = Database.database().reference()
var img : AnyObject?
var foods = [String?]()

override func viewDidLoad() {
    super.viewDidLoad()

    self.databaseref.child("basic food").observe(.childAdded, with: {( snap: DataSnapshot) in
        let snapp = snap.value as! [String:AnyObject]
        if let x = snapp["name"] as! String? {
            self.foods.insert(x, at: 0)
            //self.foods.append(x)
        }
    })
    self.foooods.reloadData()
}

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    print("difufuehf")
    let cell : foodsTableViewCell = tableView.dequeueReusableCell(withIdentifier: "aupa", for:indexPath) as! foodsTableViewCell
    print("fufvksdfvysdgfvjdsgfdsygfvds,jhvjsdvsdjvguydsfgdsylfgdsyfgsdlygfsiygf")
    if let foo =  foods[indexPath.row]  {
        print(foo)
        cell.food.text = foo
    }
    return cell
}

最佳答案

这一定是重复的,但我找不到。

您的问题是您在错误的位置调用了 reloadData,这导致它被调用得太早。更新数据模型后,您需要在完成 block 内调用它。

并且您需要确保它在主队列上被调用。

override func viewDidLoad() {
    super.viewDidLoad()

    self.databaseref.child("basic food").observe(.childAdded, with: {( snap: DataSnapshot) in
        if let snapp = snap.value as? [String:Any], let x = snapp["name"] as? String {
            self.foods.insert(x, at: 0)
            //self.foods.append(x)

            DispatchQueue.main.async {
                self.foooods.reloadData()
            }
        }
    })
}

请注意,我还修复了获取值的方式。您确实需要避免强制展开和强制转换。

关于ios - 不调用索引路径行的空 TableView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385314/

相关文章:

ios - 如何在 Swift 中循环 JSON 对象?

ios - UITableViewCell 冲突的高度约束

arrays - jq: 无法用字符串 "id"索引数组

java - 在Java中不使用Set合并两个未排序的整数数组

arrays - 在 Parse.com 中获取、存储和访问自定义数据数组

iphone - 如何在 objective-c 中使用属性的实际示例?

ios - Apple M1 芯片上的 Firebase 分析和其他模块

javascript - 如何为 JavaScript 数组创建动态键名称?

ios - 了解如何从 IB 初始化自定义 UIView

ios - 获取请求返回 {(//value )} 而不仅仅是值