Whenever you make changes to the underlying data source, you need to update the table view manual. UITableView's reloadData
method is the quick and inefficient way to do it. The correct way is:
NSArray *cells = [myTableView visibleCells];
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
for (UITableViewCell *cell in cells) {
[indexPaths addObject:[myTableView indexPathForCell:cell]];
}
[myTableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:NO];
[indexPaths release];
The rest of the rows that are not visible will be updated once you scroll and they appear.
Let us know if this works, otherwise could be a thread problem...