I got a tricky problem regarding updating my TableView, i get different results using different methods of updating it, let me explain:
Situation 1:
The first difference between reloadData
and reloadRowsAtIndexPaths
is that there are 2 UITableViewCell
objects allocated simulteaneosuly for the same indexPath when doing reloadRowsAtIndexPaths
(because the tableview 'blends' in the the new cell) . This is sometimes not foreseen by the code in cellForRowAtIndexPath
.The surprise comes from the fact that even if a cell was already allocated for a particular cell identfier the table view does not give you back this cell in dequeueReusableCellWithIdentifier
when calling reloadRowsAtIndexPaths
, instead it returns nil. In contradiction reloadData
reuses the cells it already allocated .
The 2nd difference is that endUpdates
after reloadRowsAtIndexPaths
directly calls cellForRowAtIndexPath
(if you set a breakpoint there,endUpdates
is visible in the stack trace) whereas reloadData
schedules the calls to cellForRowAtIndexPath
at a later time (not visible in the stack trace).
However you would need to post a bit more code to give us insight what you are doing there. In principle the indexPaths of the new cells are identical to the old ones also with reloadRowsAtIndexPaths
as long as you don't delete or insert rows.