【问题标题】:How to delete a cell in UITableView by using custom button in cell?如何使用单元格中的自定义按钮删除 UITableView 中的单元格?
【发布时间】:2011-02-14 06:15:37
【问题描述】:

我有 UITableView。我自定义了单元格高度(80.0f)。

我有 4 个标签 (UILabel) 和 1 个图像 (UIImage) 和 3 个按钮 (UIButton)。其中一个按钮是删除按钮。通过触摸图像上的单元格或按钮(播放按钮)来加载和播放视频。

我需要通过触摸删除按钮来删除单元格。 我为删除按钮写了一个选择器。我可以从库中删除视频。但是如何从表格中删除单元格呢?

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

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

【问题讨论】:

    标签: iphone cocoa-touch uitableview


    【解决方案1】:

    当我这样做时,我得到了解决方案。

    -(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

    【讨论】:

      【解决方案2】:

      如果你的模型按照你说的更新了,在表格视图上使用这个方法来移除带有动画的单元格:

      - (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 本身调用。

      【讨论】:

        【解决方案3】:

        呼叫:

        [self.tableView reloadData];
        

        你需要对 MVC 习语做一些研究。

        【讨论】:

          猜你喜欢
          • 2010-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多