当我使用该方法重新加载单元格时,会导致一个小错误
self.tableView.reloadRows(at: [indexPath], with: .none)
如果我使用这样的动画来关闭动画,就可以了
UIView.performWithoutAnimation {
self.tableView.reloadRows(at: [indexPath], with: .none)
}
演示和git地址https://github.com/yuandiLiao/TestTabeviewReload/tree/master
您可以在github中看到该bug以及控制器代码,如下所示。谢谢大家
class SecondViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource{
var tableView:UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let tableview = UITableView(frame: self.view.bounds, style: .grouped)
tableview.delegate = self
tableview.dataSource = self
tableview.register(TestTableViewCell.self, forCellReuseIdentifier: NSStringFromClass(TestTableViewCell.self))
tableview.estimatedRowHeight = 0
self.view.addSubview(tableview)
self.tableView = tableview
}
func numberOfSections(in tableView: UITableView) -> Int {
return 6
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0{
return 1
}
if section == 1 {
return 0
}
return 10
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 120
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 50
}
func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
return 5
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = UILabel()
header.text = "section" + String(section)
return header
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footer = UIView()
footer.backgroundColor = UIColor.orange
return footer
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(TestTableViewCell.self)) as! TestTableViewCell
cell.tag = Int(String(indexPath.section + 1) + String(indexPath.row))!
cell.textLabel?.text = "cell" + String(indexPath.section) + String(indexPath.row)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.tableView.reloadRows(at: [indexPath], with: .none)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
谢谢