swift - swift 4 在 UIRefeshControl 之前清空 UITableView
问题描述
美好的一天,伙计们!我在更新数据时遇到了一点问题。我正在使用 JSON-RPC 从后端获取信息并填充我的表格视图单元格。我在我的 TableView 中实现了 UIRefreshContol,所以现在当我拉动刷新时,它会给我旧信息之上的新信息。所以我有一个产品列表,当我添加一些产品并刷新 tableView 以获取更新信息时,tableView 会在旧信息之上为我提供旧信息和新信息在我从 JSON 获取更新信息之前有什么方法可以清空表格?
// 这是我的 JSON
func getJSONresponse() {
getResponse(o_method: "search_read", o_model: "res.users", o_domain:[["id", "=", jkID]], o_fields: ["name","partner_id"]) { (result) -> () in
//print(result)
if result != JSON.null {
let partner_id = result[0]["partner_id"][0].int!
getResponse(o_method: "search_read", o_model: "res.partner", o_domain: [["id", "=", partner_id]], o_fields: ["name", "kato"], completion: { (result)->() in
//print(result)
let id = result[0]["kato"][0].int!
katoID = id
print("adiasodjasoid",katoID)
getResponse(o_method: "search_read", o_model: "property.building", o_domain: [], o_fields: ["name","kato_area"], completion: { (result)->() in
result.forEach({ (temp) in
var area:String = "", name:String = "", totID: Int = 0
if (temp.1["kato_area"].string != nil) {
area = temp.1["kato_area"].string!
}
if (temp.1["name"].string != nil) {
name = temp.1["name"].string!
}
if (temp.1["id"].int != nil) {
totID = temp.1["id"].int!
}
let newModel = resUser(area: area, name: name, id: totID)
self.data.append(newModel)
})
DispatchQueue.main.async {
self.tableView.reloadData()
}
// print(self.data)
})
})
}
}
}
那是我的拉动刷新功能
@objc func refreshData() {
tableView.reloadData()
getJSONresponse()
self.tableView.contentInset = UIEdgeInsets(top: 80, left: 0, bottom: 0, right: 0)
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
self.refresher.endRefreshing()
self.tableView.contentInset = UIEdgeInsets.zero
self.tableView.setContentOffset(.zero, animated: true)
}
}
解决方案
好吧,您必须将 UITableView 绑定到一个数组,有些人也可能将其称为数据源。
所以基本上继承人的流程:
1) 创建一个可变数组/数据源(这将包含所有 JSON)。
2)对应UITableView的行数方法返回这个数组/数据源的计数。
3)当你按下刷新。删除数组/数据源的所有内容(removeAll)
4)一旦您收到来自后端的响应,将它们添加到数组/数据源并在 UITableView 对象上调用 reloadData。
希望有帮助。代码和繁荣!
推荐阅读
- python - 我不能在python中启动两个并行线程吗,每个线程都有一个forerver循环
- javascript - 将 javascript 滑块添加到 BigCartel 自定义页面
- python - SQLAlchemy:会话关闭时使用相关对象
- python-3.x - python中类的不同记录器
- java - 如果地图中不存在属性,如何使用 strsubsitutor 将模板字符串中的值替换为 null 或空字符串
- javascript - 将鼠标悬停在模式链接上时隐藏浏览器状态栏上的链接
- javascript - 如何使用 JavaScript 将文本复制到剪贴板而不使用换行符?
- .net - Serilog .NET 核心:过滤请求日志并将它们发送到单独的接收器
- regex - 正则表达式在两个边界之间查找字符串
- c++ - 与视图一起使用的自定义容器类型的要求