tableView.reloadData和tableView.reloadRows之间有什么区别?

tableView.reloadData()tableView.reloadRows(at: [IndexPath],with: .none)什么tableView.reloadRows(at: [IndexPath],with: .none)

我知道在tableView.reloadData()之后,单元格会重新加载所有内容


我尝试了以下内容。

 cell.count = 2 

indexPath = [0,0][0,1]

 tableView.reloadRows(at: [[0,0] as IndexPath],with: .none) tableView.reloadRows(at: [[0,1] as IndexPath],with: .none) 

但是,它没有按预期结果。

使用单元格重新加载所有tableView.reloadRows()并使用tableView.reloadData()重新加载之间的行为是否不同?

查看苹果文档 –

1. reloadData():

重新加载表视图的行和部分。

说明 :调用此方法可重新加载用于构造表的所有数据,包括单元格,节页眉和页脚,索引数组等。 为了提高效率,表视图仅重新显示可见的行。 如果表因重新加载而缩小,它会调整偏移量。 表视图的委托或数据源在希望表视图完全重新加载其数据时调用此方法。 不应在插入或删除行的方法中调用它,尤其是在通过调用beginUpdates()和endUpdates()实现的动画块中。

2. reloadRows(at:with :):

使用动画效果重新加载指定的行。

说明

重新加载行会导致表视图向其数据源询问该行的新单元格。 该表为新单元设置动画,因为它为旧行设置了动画。 如果要提醒用户单元格的值正在更改,请调用此方法。 但是,如果通知用户并不重要 – 也就是说,您只想更改单元格显示的值 – 您可以获取特定行的单元格并设置其新值。

当在beginUpdates()和endUpdates()方法定义的动画块中调用此方法时,它的行为与deleteRows(at:with :)类似。 UITableView传递给方法的索引在任何更新之前在表视图的状态中指定。 无论动画块中的插入,删除和重新加载方法调用的顺序如何,都会发生这种情况。

https://developer.apple.com/documentation/uikit/uitableview/1614862-reloaddata https://developer.apple.com/documentation/uikit/uitableview/1614935-reloadrows