Удаление ячеек из UICollectionView через NSNotification

У меня есть простое приложение на основе UICollectionView - один UICollectionView и модель данных на основе NSMutableArray для простоты.

Я могу удалить ячейки без проблем с помощью метода didSelectItemAtIndexPath: делегата:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    [self.data removeObjectAtIndex:[indexPath row]];
    [self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
}

Однако я'я пытаюсь добавить опцию удаления черезUIMenuController вUICollectionViewCell подкласс, который запускается черезUILongPressGestureRecognizer который все прекрасно работает, и я успешно вызватьNSNotification

-(void)delete:(id)sender{
      NSLog(@"Sending deleteme message");
      [[NSNotificationCenter defaultCenter] postNotificationName:@"DeleteMe!" object:self userInfo:nil];
}

Я ловлю это в моем ViewController и вызываю следующий метод:

-(void)deleteCell:(NSNotification*)note{
       MyCollectionViewCell *cell = [note object];
       NSIndexPath *path = nil;
       if((path = [self.collectionView indexPathForCell:cell]) != nil){
           [self.data removeObjectAtIndex:[path row]];
           [self.collectionView deleteItemsAtIndexPaths:@[path]];
       }
}

И он вылетает на deleteItemsAtIndexPaths: callI '

-[UICollectionViewUpdateItem action]: unrecognized selector sent to instance 0xee7eb10

мы проверили все очевидное - например, объект из NSNotification и indexPath, созданный из вызова indexPathForCell: и все это выглядит вполне нормально. Кажется, яm вызывает deleteItemsAtIndexPath: с одинаковой информацией в обоих местах, но по какой-то причине происходит сбой при прохождении через маршрут уведомления.

Это информация по адресу, указанному в ошибке:

(lldb) po 0xee7eb10
(int) $1 = 250080016  index path before update ( 2 indexes [0, 0]) index path after update ((null)) action (delete)

Возможно, путь индекса после обновления, являющийся нулевым, является существенным ...

Есть идеи?

Ответы на вопрос(3)

Ваш ответ на вопрос