Ios 如何在不重新加载行和数据的情况下更新uitableview单元格
我需要在swift中更新tableview单元格,而不需要重新加载行和重新加载数据方法。有可能吗?如果您只想更新屏幕上的行,可以使用Ios 如何在不重新加载行和数据的情况下更新uitableview单元格,ios,swift,uitableview,Ios,Swift,Uitableview,我需要在swift中更新tableview单元格,而不需要重新加载行和重新加载数据方法。有可能吗?如果您只想更新屏幕上的行,可以使用tableview.indexPathsForVisibleRows,其他行将通过cellForRow/willDisplayCell 然后你会做一些传统的事情,比如 tableview.indexPathsForVisibleRows.forEach { if let cell = tableview.cellForRow(at: $0)
tableview.indexPathsForVisibleRows
,其他行将通过cellForRow
/willDisplayCell
然后你会做一些传统的事情,比如
tableview.indexPathsForVisibleRows.forEach {
if let cell = tableview.cellForRow(at: $0) as? MyCell {
cell.configure()
}
}
如果只想更新屏幕上的行,可以使用
tableview.indexPathsForVisibleRows
,其他行将通过cellForRow
/willDisplayCell
然后你会做一些传统的事情,比如
tableview.indexPathsForVisibleRows.forEach {
if let cell = tableview.cellForRow(at: $0) as? MyCell {
cell.configure()
}
}
如果要更新单元格内容大小,应使用BeginUpdate()和EndUpdate()更改UITableViewCell的内容大小,在这种情况下,将为tableView中的每个单元格调用heightForRowAtindexPath并更新TableviewCell的高度。对于iOS>10,您应该选择性能更新(uu:completion:)而不是BeginUpdate()和EndUpdate() 更多信息
如果要更新单元格内容大小,应使用BeginUpdate()和EndUpdate()更改UITableViewCell的内容大小,在这种情况下,将为tableView中的每个单元格调用heightForRowAtindexPath并更新TableviewCell的高度。对于iOS>10,您应该选择性能更新(uu:completion:)而不是BeginUpdate()和EndUpdate() 更多信息
试试这段代码:
UIView.setAnimationsEnabled(false)
self.yourTableView.beginUpdates()
self.yourTableView.reloadSections(NSIndexSet(index:indexToBeReload) as IndexSet, with: UITableViewRowAnimation.none)
self.yourTableView.endUpdates()
请尝试以下代码:
UIView.setAnimationsEnabled(false)
self.yourTableView.beginUpdates()
self.yourTableView.reloadSections(NSIndexSet(index:indexToBeReload) as IndexSet, with: UITableViewRowAnimation.none)
self.yourTableView.endUpdates()
如果您告诉我们为什么不想使用
reloadRows
或reloadData
?@eimanta,那么回答起来就更容易了。因为我只需要更新一个特定的单元格,而且我正在使用我的自定义方法,根据给用户的评分设置tableview的高度。但是如果我给单用户评分,其他单元格也会受到影响,重新加载行也会受到影响。如果您告诉我们为什么不想使用reloadRows
或reloadData
?@eimanta,我只需要更新一个特定单元格,并且我正在使用我的自定义方法,根据给用户的评级。但如果我给单用户评分,其他单元格也会受到影响,重新加载行也会受到影响