Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在不重新加载行和数据的情况下更新uitableview单元格_Ios_Swift_Uitableview - Fatal编程技术网

Ios 如何在不重新加载行和数据的情况下更新uitableview单元格

Ios 如何在不重新加载行和数据的情况下更新uitableview单元格,ios,swift,uitableview,Ios,Swift,Uitableview,我需要在swift中更新tableview单元格,而不需要重新加载行和重新加载数据方法。有可能吗?如果您只想更新屏幕上的行,可以使用tableview.indexPathsForVisibleRows,其他行将通过cellForRow/willDisplayCell 然后你会做一些传统的事情,比如 tableview.indexPathsForVisibleRows.forEach { if let cell = tableview.cellForRow(at: $0)

我需要在swift中更新tableview单元格,而不需要重新加载行和重新加载数据方法。有可能吗?

如果您只想更新屏幕上的行,可以使用
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,我只需要更新一个特定单元格,并且我正在使用我的自定义方法,根据给用户的评级。但如果我给单用户评分,其他单元格也会受到影响,重新加载行也会受到影响