I got it working, the problem seems to be the fade animation that is added when the cell needs to be updated with the Managed Object change at:
- (void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch(type)
{
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
self.insertedRow = YES;
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];// Do not add an animation or the voicemail cell will
At NSFetchedResultsChangeUpdate, instead of make it use the fade animation, I am not adding any animation and that seems to have solved the cell disappearing problem.
I am still not sure what could be causing the cell to disappear with the fade animation but at least it does not disappear now after this change. If anyone knows why it disappears with the fade animation, it is welcome to comment.