Ios 首次加载tableview时,UITableViewCells会闪烁

Ios 首次加载tableview时,UITableViewCells会闪烁,ios,objective-c,uitableview,Ios,Objective C,Uitableview,因此,我有一个使用自定义UITableViewCells的UITableView。我在这个方法“controllerDidChangeContent”中找到了这个问题及其原因,当表加载时,它会被调用大约5次。由于核心数据更新,正在调用此方法 如果我注释掉任何一行中有的内容,我可以阻止闪烁的发生。在endUpdates之后,您不需要调用reloadData。您可以在beginUpdatesendUpdates块中更改UITableView数据源,这样您就不必调用reloadData。如果您的整个数

因此,我有一个使用自定义UITableViewCells的UITableView。我在这个方法“
controllerDidChangeContent
”中找到了这个问题及其原因,当表加载时,它会被调用大约5次。由于核心数据更新,正在调用此方法


如果我注释掉任何一行中有的内容,我可以阻止闪烁的发生。在
endUpdates
之后,您不需要调用
reloadData
。您可以在
beginUpdates
endUpdates
块中更改
UITableView
数据源,这样您就不必调用
reloadData
。如果您的整个数据源已更改,则调用
reloadData
,因为这可能是一个相对昂贵的调用。使用
beginUpdates
endUpdates
可以更改/插入/删除数据源中的项目,而无需重新加载整个
UITableView

下面是它的外观:


如果这无助于解决您的问题,那么我需要查看更多代码,特别是在
beginUpdates
endUpdates
块中执行数据源更新的地方

endUpdates
之后,您不需要调用
reloadData
。您可以在
beginUpdates
endUpdates
块中更改
UITableView
数据源,这样您就不必调用
reloadData
。如果您的整个数据源已更改,则调用
reloadData
,因为这可能是一个相对昂贵的调用。使用
beginUpdates
endUpdates
可以更改/插入/删除数据源中的项目,而无需重新加载整个
UITableView

下面是它的外观:


如果这无助于解决您的问题,那么我需要查看更多代码,特别是在
beginUpdates
endUpdates
块中执行数据源更新的地方

endUpdates
之后,您不需要调用
reloadData
。您可以在
beginUpdates
endUpdates
块中更改
UITableView
数据源,这样您就不必调用
reloadData
。如果您的整个数据源已更改,则调用
reloadData
,因为这可能是一个相对昂贵的调用。使用
beginUpdates
endUpdates
可以更改/插入/删除数据源中的项目,而无需重新加载整个
UITableView

下面是它的外观:


如果这无助于解决您的问题,那么我需要查看更多代码,特别是在
beginUpdates
endUpdates
块中执行数据源更新的地方

endUpdates
之后,您不需要调用
reloadData
。您可以在
beginUpdates
endUpdates
块中更改
UITableView
数据源,这样您就不必调用
reloadData
。如果您的整个数据源已更改,则调用
reloadData
,因为这可能是一个相对昂贵的调用。使用
beginUpdates
endUpdates
可以更改/插入/删除数据源中的项目,而无需重新加载整个
UITableView

下面是它的外观:


如果这无助于解决您的问题,那么我需要查看更多代码,特别是在
beginUpdates
endUpdates
块中执行数据源更新的地方

为什么不直接调用reloadSections方法而不是[self.tableView reloadData]

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

为什么不直接调用reloadSections方法而不是[self.tableView reloadData]

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

为什么不直接调用reloadSections方法而不是[self.tableView reloadData]

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

为什么不直接调用reloadSections方法而不是[self.tableView reloadData]

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

但是,当我在添加新单元格时从controllerDidChangeContent中取出重新加载的数据时,它会添加一个额外的空白单元格。还有一些其他问题导致了闪烁,但这段代码是正确的方法。嘿,jdog,是什么问题导致了闪烁。你能在这里告诉我吗?但是当我在添加新单元格时从ControllerIDChangeContent中取出重新加载的数据时,它会添加一个额外的空白单元格。还有一些其他问题会导致闪烁,但这段代码是正确的方法。嘿,jdog,是什么问题导致了闪烁。你能在这里告诉我吗?但是当我在添加新单元格时从ControllerIDChangeContent中取出重新加载的数据时,它会添加一个额外的空白单元格。还有一些其他问题会导致闪烁,但这段代码是正确的方法。嘿,jdog,是什么问题导致了闪烁。你能在这里告诉我吗?但是当我在添加新单元格时从ControllerIDChangeContent中取出重新加载的数据时,它会添加一个额外的空白单元格。还有一些其他问题会导致闪烁,但这段代码是正确的方法。嘿,jdog,是什么问题导致了闪烁。你能告诉我吗?