Как удалить ячейку в UITableView с помощью пользовательской кнопки в ячейке?


У меня есть UITableView. Я настроил высоту ячейки (80,0 f).

У меня есть 4 метки (UILabel) и 1 Изображение(UIImage) и 3 кнопки (UIButton). одна из кнопок-кнопка Удалить. При нажатии на ячейку или кнопку (кнопку воспроизведения) на изображении загружается и воспроизводится видео.

Мне нужно удалить ячейку, нажав кнопку Удалить. Я написал селектор для кнопки удаления. Я могу удалить видео из библиотеки. Но как удалить ячейку из таблицы ?

Спасибо. То на следующем рисунке показана кнопка удаления моей программы.

Alt текст http://www.freeimagehosting.net/uploads/c2036dee19.png

3 2

3 ответа:

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

- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths
              withRowAnimation:(UITableViewRowAnimation)animation

Http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/deleteRowsAtIndexPaths:withRowAnimation:

Табличное представление очистит ячейку для вас.

Обратите внимание, что метод commitEditingStyle: вызывается только тогда, когда кнопка удаления tableview (та, которую вы получаете через режим редактирования или swipe-to-delete) будет касаться. Из вашего вопроса следует, что у вас есть пользовательская кнопка, поэтому этот метод не вызывается. Вы можете назвать его сами, но я бы не рекомендовал его, так как он должен быть вызван только самим tableview.

Я получил решение, когда сделал это.

-(void)deleteClicked:(id)sender
{
    UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
    clickedButtonPath = [self.tableView indexPathForCell:clickedCell];

    NSArray *arrayDelete = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectoryD = [arrayDelete objectAtIndex:0]; 

    NSDictionary *dictOfplist1 = [contentArray objectAtIndex:clickedButtonPath.row];

   //To remove the videos from Documents folder       
    NSString *pathTemp1  = [documentsDirectoryD stringByAppendingString:[dictOfplist1 objectForKey:@"fileVideoE"]];
    BOOL succeed1 = [[NSFileManager defaultManager] removeItemAtPath:pathTemp1 error:nil];

   //To remove the images shown in cell from Documents folder.  
    NSString *pathTemp2  = [documentsDirectoryD stringByAppendingString:[dictOfplist1 objectForKey:@"fileImageE"]];
    BOOL succeed2 = [[NSFileManager defaultManager] removeItemAtPath:pathTemp2 error:nil];

   //To remove the data from the plist which is in Documents folder.
    NSString *pathDelete = [documentsDirectoryD stringByAppendingString:@"/details.plist"];
    [contentArray removeObjectAtIndex:[clickedButtonPath row]];
    [contentArray writeToFile:pathDelete atomically: YES];

    //To reload the data of the plist after deleting the items from it.
 [self.tableView reloadData];
}     

Все было прекрасно ячейка удалена, данные в plist удалены видео и изображения в папке Documents удалены.

Вот изображение, когда я удаляю 2-ю строку.
Спасибо.

Alt текст http://www.freeimagehosting.net/uploads/f3c96ae3a7.png

Вызов:

[self.tableView reloadData];

Вам нужно провести некоторые исследования по идиоме MVC.