ios - tableView.reloadData 和 tableView.reloadRows 有什么区别?

标签 ios swift uitableview swift3 tableview

<分区>

tableView.reloadData()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。重新加载数据():

重新加载表格 View 的行和部分。

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

<强>2。 reloadRows(at:with:) :

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

描述:

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

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

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

关于ios - tableView.reloadData 和 tableView.reloadRows 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734308/

相关文章:

iphone - UITableViewCell 中的复选框图像切换

ios - 如何获取 PDF 格式的 UITableView 快照

iOS 和 CoreAudio : Calling MusicPlayerSetTime() stops MusicPlayer

iphone - 我可以在我的 iPhone 应用程序中使用动态库(共享对象)吗?

ios - 在 childViewController 中显示 inputAccessoryView

ios - 如何根据 UIAlertController 中的 UITextField 禁用 UIAlertAction?

ios - Swift 5 组合布局 - itemSize 和 groupSize 扭曲项目 subview

iphone - 如何检测 UITableViewCell 上的 "long Tap"手势

android - Android 中的 NSURLCache 替代方案

ios - 按钮执行但不突出显示