У меня есть приложение Core Data с контроллером панели вкладок, которое отображает 2 контроллера представления. Если я добавлю что-то в контроллер представления первой вкладки, это должно отобразиться в ВК второй вкладки. Оба VC основаны на NSFetchedResultsController, который основан на том же самом объекте; единственное отличие состоит в том, что у каждого есть предикат, а у второго VC нет.
Это нормально работает для обычного шаблона, и когда данные добавляются из 1-го ВК, они мгновенно обновляются во 2-й вкладке с использованием controllerWillChangeContent и controllerDidChangeContent. Проблема заключается в том, что если пользователь добавляет или удаляет какие-либо строки в 1-ом ВК, когда пользователь заходит на 2-ю вкладку, он не видит, что строки вставлены или удалены оживленно ... все уже есть.
То, что я хотел бы сделать, в VC 2-й вкладки, это задержка вызова [self.tableView endUpdates] (которая вызывает анимированную вставку / удаление строк в таблице), пока пользователь фактически не перейдет на эту вкладку что VC viewWillAppear. Я пробовал это, но, похоже, не работает:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
tableviewUpdates = TRUE;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (tableviewUpdates) {
tableviewUpdates = FALSE;
[self.tableView endUpdates];
}
}
Это работает, если добавить по одной строке за раз, а затем перейти на 2-ю вкладку, но не если я добавлю несколько строк на 1-й вкладке, а затем переключусь.
Любая помощь будет оценена.