删除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 结束刷新