Удаление ячеек из 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)
Возможно, путь индекса после обновления, являющийся нулевым, является существенным ...
Есть идеи?