NSFetchedResultsControllerDelegate и чередующиеся таблицы представления ячеек - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть UITableView, который обновляется с NSFetchedResultsController.UITableView имеет чередующиеся цвета строк для четных и нечетных строк.Мне нужно добавить поддержку для вставки и удаления объектов, поэтому я реализовал NSFetchedResultsControllerDelegate, чтобы справиться с этим.Тем не менее, теперь моя чередующаяся цветовая схема снимается после вставки в любом месте, но в конце.Любые идеи о том, как решить эту проблему без перезагрузки табличного представления (и не потерять мои анимации)?

Вот мой код:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
  CustomTableViewCell *cell = ...;
  indexPath.row % 2 == 0 ? [cell odd] : [cell even];
  return cell;
}

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)object 
       atIndexPath:(NSIndexPath *)deleteIndexPath 
     forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)insertIndexPath 
{
  switch(type) 
  {   
    case NSFetchedResultsChangeInsert:

      [self.mainTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:insertIndexPath] 
                    withRowAnimation:UITableViewRowAnimationFade];
      break;
    case NSFetchedResultsChangeDelete:
      [self.mainTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:deleteIndexPath] 
                    withRowAnimation:UITableViewRowAnimationFade];
      break;
  }
}

1 Ответ

0 голосов
/ 07 февраля 2011

Ниже приведено то, что я сделал для одного из моих проектов:

- (void)reloadRowsFromIndex:(NSUInteger)index {
    NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
    for (NSInteger i = index; i < [items count]; i++) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
    }
    [tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
    [indexPaths release];
}

reloadRowsFromIndex: вызывается в пределах tableView:commitEditingStyle:forRowAtIndexPath: с изменением первого пути индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...