UITableView删除多个部分中的多行并保存到.plist

时间:2013-09-02 09:39:51

标签: ios uitableview

关于这个主题的Stack溢出有很多很棒的答案,但我找不到任何具体到我的理由,所以我会请你们帮忙。

我有一个访问.plist信息的TableView。 .plist中的信息被分类到字典数组中。因此,第1部分可能有3个信息词典,第2部分可能有4个...

我需要做的是能够在tableView中选择多行(已经设置好),然后从tableView中删除行(也设置了),但我似乎无法删除和更新。没有它崩溃的plist。以下是我的代码:

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
 if (self.tableView.isEditing)
    {
        _rowsToDelete = [[NSMutableArray alloc] initWithArray:[self.tableView indexPathsForSelectedRows]];
 }

在DeleteRows方法内部,我尝试了很多操作,但基本上我需要再次访问.plist并从tableView中删除所选索引并重新保存.plist。

到目前为止,我得到的最好结果是我可以在一个部分中删除多行但是在多个部分中选择多行会崩溃。一个答案建议使用Case:by Case:每个部分的情况,但部分的数量动态变化。

我为缺乏有关所使用的确切代码的信息而道歉......但我希望有人能为这种情况提出最佳解决方案。

谢谢先进,T

1 个答案:

答案 0 :(得分:3)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// This method will be called for each cell you have tapped
// You cant write here any code for deletion here 
}

而是尝试下面提到的方法 - 这适用于单细胞删除

但是你可以删除RowAtIndexPaths获取一个数组&作为NSIndexPath实例的行

- (IBAction)actionDeleteCell:(UIButton *)sender {

// below code for getting selected cell row and its section

UIView *view = sender.superview;
while (view && ![view isKindOfClass:[UITableViewCell self]]) view = view.superview;

UITableViewCell *cell = (UITableViewCell *)view;
indexPathForDeletion = [self.tableViewListViewVC indexPathForCell:cell];
NSLog(@"cell is in section %d, row %d", indexPathForDeletion.section, indexPathForDeletion.row);

//below code for deletion from your datasource and then delete from tableview

 [self.dataArray removeObjectAtIndex:indexPathForDeletion.row];
        [self.tableView deleteRowsAtIndexPaths:@[indexPathForDeletion]];
}