在表格视图中 如果添加一行后使用reloadData,我认为性能不好 reloadData是为此目的设计的吗?
如果没有 如何添加行?
我第一次使用reloadData()
现在使用
let index = IndexPath(row: dataList.count - 1, section: 0)
tableView.storyTableView.insertRows(at: [index], with: .none)
但加注NSInternalInconsistencyException
所以我将再次使用reloadData
如果我继续使用reloadData是否有问题?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if dataList.count < 1{
self.emptyTableLabel.layer.zPosition = 2
}else{
self.emptyTableLabel.alpha = 0
}
return dataList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DataCell", for: indexPath) as! Datacell
cell.parentTable = self
let data = self.dataList[indexPath.row]
cell.indexLabel.text = "\(indexPath.row+1)"
cell.nick.text = (data["UserNick"] as! String)
cell.content.text = (data["Content"] as! String)
cell.index = indexPath.row
cell.time.text = (data["RegisterDate"] as! String).calculDateTime()
return cell
}
动态地将用户的值添加到表视图中, 当数据一一进入时,它会很好地工作。
但是如果几乎同时接收到多个值,则会抛出NSInternalInconsistencyException异常。
答案 0 :(得分:1)
Go through this Perform updates method。
func performBatchUpdates(_ updates: (() -> Void)?,
completion: ((Bool) -> Void)? = nil)
在此处执行插入操作,并在完成后重新加载Tableview
答案 1 :(得分:1)
tableView.performBatchUpdates ({
let index = IndexPath(row: dataList.count - 1, section: 0)
tableView.storyTableView.insertRows(at: [index], with: .none)
},
completion: { (success) in
tableView.reloadData()
}
)
选中这个