代码之家  ›  专栏  ›  技术社区  ›  srikanth rongali

如何使用单元格中的自定义按钮删除uitableview中的单元格?

  •  2
  • srikanth rongali  · 技术社区  · 14 年前

    我有很好的视野。我定制了电池高度(80.0F)。

    我有4个标签(uilabel)和1个图像(uiimage)和3个按钮(uibutton)。其中一个按钮是delete按钮。通过触摸图像上的单元格或按钮(播放按钮),可以加载和播放视频。

    我需要按“删除”按钮删除单元格。 我为delete按钮编写了一个选择器。我可以从图书馆里删除这段视频。但是如何从表中删除单元格呢?

    谢谢您。 下图显示了“我的程序”的“删除”按钮。

    alt text http://www.freeimagehosting.net/uploads/c2036dee19.png

    3 回复  |  直到 14 年前
        1
  •  3
  •   Mike Weller    14 年前

    如果您的模型已按您所说的方式更新,请在“表格”视图上使用此方法删除带有动画的单元格:

    - (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的“删除”按钮(通过编辑模式或滑动可删除的按钮)时才调用。从你的问题听起来你有一个自定义按钮,这就是为什么这个方法没有被调用。你可以自己调用它,但我不建议这样做,因为它只应该由tableview本身调用。

        2
  •  2
  •   srikanth rongali    14 年前

    我做这件事的时候找到了解决办法。

    -(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文件夹中的视频和图像。

    这是我删除第二行时的图像。
    谢谢您。

    alt text http://www.freeimagehosting.net/uploads/f3c96ae3a7.png

        3
  •  1
  •   Paul Lynch    14 年前

    呼叫:

    [self.tableView reloadData];
    

    你需要对mvc的习惯用法做一些研究。