删除firebase中的数据后如何刷新TableViewCell?

Posted

技术标签:

【中文标题】删除firebase中的数据后如何刷新TableViewCell?【英文标题】:How to refresh TableViewCell after deleting data in firebase? 【发布时间】:2018-12-20 16:07:24 【问题描述】:

我想在通过滑动操作表删除对话后刷新我的对话(表格视图单元格)。

我尝试在删除数据后重新加载表格视图,但它不起作用。还有异步。

 // Swipe Action Sheet solution
func tableView(_ tableView: UITableView,
               trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?


    // Write action code for the Flag
    let deleteAction = UIContextualAction(style: .normal, title:  "Löschen", handler:  (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
        let ref = Database.database().reference()
        ref.child("users").child((self.currentUser?.uid)!).child("conversations").child((self.items[indexPath.row].user.uid)!).removeValue()
        DispatchQueue.main.async 
            self.tableView.reloadData()
        
        success(true)
    )
    deleteAction.backgroundColor = .red
    return UISwipeActionsConfiguration(actions: [deleteAction])


提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果没有任何错误,您必须在removeValue 方法的完成块中重新加载数据。此外,在重新加载数据之前,您必须从 items 数组中删除项目

.removeValue  error,_ in
    if error == nil 
        self.items.remove(at: indexPath.row)
        self.tableView.reloadData() // self.tableView.deleteRows(at: [indexPath], with: .automatic)
    
    success(error == nil)

【讨论】:

这个完成块是否在主队列中被调用?如果没有,请确保将 UI 更新强制放在主队列中。 @rmaddy ***.com/a/39183023/10253094 但我不确定,是这种情况吗? @rmaddy 我在这里也没有找到任何相关信息:firebase.google.com/docs/reference/ios/firebasedatabase/api/…:【参考方案2】:

要使用滑动删除行,您可以使用

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) 
        if editingStyle == .delete 
            items.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
         
    

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool 

    return true

而且因为您没有重新加载表格视图,所以看起来会更好

【讨论】:

以上是关于删除firebase中的数据后如何刷新TableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 完成加载后如何使 UIRefreshControl 结束刷新

如何防止刷新后表单服务被删除?

react ag网格中的行删除后如何刷新网格

刷新后如何让用户保持登录到 Firebase 应用程序?

在 React.JS 中刷新后,如何让用户保持登录到 firebase?

React Native:使用“refFromURL”从firebase中删除图像