我有一個簡單的基於UICollectionView的應用程序 - 一個UICollectionView和一個基於NSMutableArray的數據模型。通過NSNotification從UICollectionView中刪除單元格
我可以通過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:致電
-[UICollectionViewUpdateItem action]: unrecognized selector sent to instance 0xee7eb10
我檢查一切顯而易見的 - 就像從NSNotification對象,並從indexPathForCell創建的indexPath:打電話,這一切似乎完全罰款。看起來我正在調用deleteItemsAtIndexPath:在兩個地方都有相同的信息,但由於某種原因,它在通過通知路由時失敗。
(lldb) po 0xee7eb10
(int) $1 = 250080016 <UICollectionViewUpdateItem: 0xee7eb10> index path before update (<NSIndexPath 0x9283a20> 2 indexes [0, 0]) index path after update ((null)) action (delete)
更新或許被空之後的索引路徑是顯著...
任何想法:
這是在地址信息錯誤給?
在'deleteCell:'你用'self.collectionViewOne'和'self.collectionView' - 是故意的嗎? –
對不起 - 這是錯字。 – melps
我可以確認這從插入通知的新項目時也會發生。 – Brett