新的FUITableViewDataSource - 如何使用?斯威夫特3

时间:2016-11-28 23:20:11

标签: swift firebase firebase-realtime-database firebaseui

刚刚更新到较新的FirebaseUI Pod - 一些事情已经改变,但其中一个重要的是FUI表视图的工作方式。我在旧版本上运行良好,但我正在努力解决这个问题 - 而且缺乏文档/示例。

RStudio

我不明白从哪里调用索引路径。我需要单独 self.dataSource = FUITableViewDataSource(query: <#T##FIRDatabaseQuery#>, view: <#T##UITableView#>, populateCell: <#T##(UITableView, IndexPath, FIRDataSnapshot) -> UITableViewCell#>) 进入吗?我也不太明白它应该存在于哪里 - 之前,它是NSIndexPath,我会将它设置在我的FirebaseTableViewDataSource中,并且它会直接创建细胞等。它现在看起来好像需要存在于我的viewDidLoad中。有没有人对此有任何建议?

1 个答案:

答案 0 :(得分:6)

这个最新版本的test使用tableView:bind:方法(看起来像是他们制作的UITableView类扩展),我能够让它工作。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let firebaseRef = FIRDatabase.database().reference().child(/*insert path for list here*/)

    let query = firebaseRef.queryOrderedByKey() /*or a more sophisticated query of your choice*/

    let dataSource = self.tableView.bind(to: query, populateCell: { (tableView: UITableView, indexPath: IndexPath, snapshot: FIRDataSnapshot) -> UITableViewCell in

        let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)

        let value = snapshot.value as! NSDictionary

        let someProp = value["someProp"] as? String ?? ""

        cell.textLabel?.text = someProp

        return cell
    })
}

还要确保您正在观察您的查询以进行更改,否则tableView将不会被填充

self.query?.observe(.value, with: { snapshot in
})