2014-04-15 3 views
3

Я поместил кнопку в ячейку uicollectionviewcell, и когда эта кнопка нажата, она программно устанавливает ячейку как выбранную.Удаление выбранных ячеек в uicollectionview

- (void) deleteItem:(id)sender 
{ 
    self.selected = YES; 
    [self.cellOptionsDelegate deleteItem]; 
} 

Затем он делегирует диспетчеру uicollectionview удалять элемент, который выбран.

- (void) deleteItem 
{ 
    NSArray* selectedItemsIndexPaths = [self.collectionView indexPathsForSelectedItems]; 

    // Delete the items from the data source. 
    [self.taskArray removeObjectAtIndex:[[selectedItemsIndexPaths objectAtIndex:0] row]]; 

    // Now delete the items from the collection view. 
    [self.collectionView deleteItemsAtIndexPaths:selectedItemsIndexPaths]; 

} 

Однако, когда я получить выбранные элементы с помощью метода uicollectionview indexPathsForSelectedItems, он не видит, что я выбрал элемент и список пуст. Я использую прессу, чтобы выбрать метод делегирования для другой функции, поэтому я надеялся сделать что-то в соответствии с тем, что я объяснил выше. Есть ли способ сделать эту работу или лучший способ сообщить контроллеру, что кнопка, нажатая в ячейке, была привязана к ячейке по определенному пути индекса?

спасибо.

ответ

2

Просто отправьте указатель ячейки от метода DeleteItem вашей клетки

- (void) deleteItem:(id)sender 
{ 
    self.selected = YES; 
    [self.cellOptionsDelegate deleteItem:self]; 
} 

и изменить метод uicollectionviewcontroller к

- (void) deleteItem:(UICollectionViewCell*)cellToDelete 
{ 
    NSIndexPath indexPathToDelete = [self indexPathForCell: cellToDelete]; 

    // Delete the items from the data source. 
    [self.taskArray removeObjectAtIndex:[indexPathToDelete row]]; 

    // Now delete the items from the collection view. 
    [self.collectionView deleteItemsAtIndexPaths:@[indexPathToDelete]]; 

} 

Не забудьте обновить '(аннулируются) DeleteItem: (UICollectionViewCell *) cellToDelete' в вашем * .h файле.

+0

LOL! Я получил это, как вы ответили, спасибо. – Shawn

+0

Это удалит только одну ячейку. Как удалить несколько выбранных ячеек за один раз нажатием какой-либо кнопки? –

1

решаемые путем отправки ячейки через метод делегата и использовать это:

NSIndexPath* indexPath = [self.collectionView indexPathForCell:cell]; 
0

анимированный:

[self.collectionView performBatchUpdates:^ { 
     [_array removeObject:file];    
     [self.collectionView deleteItemsAtIndexPaths:@[indexPath]]; 
} completion:nil]; 
Смежные вопросы