在删除单元格和重新载入表格视图时出现访问错误

我试图build立一个使用自定义UITableViewCell表,但删除单元格,当我尝试加载视图时,我得到一个EXC_BAD_ACCESS错误,在这里我从字典中获取数据并将其加载到表视图。

我的表的代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { cell = (uploadCustomCell *)[tabelView1 dequeueReusableCellWithIdentifier:@"cell"]; [cell setSelectionStyle:UITableViewCellEditingStyleNone]; if (cell == nil) { [[NSBundle mainBundle]loadNibNamed:@"uploadCustomCell" owner:self options:nil]; cell = (uploadCustomCell *)self.uploadCustomcell; } saveBtnCcell.hidden = YES; cell.textNamefield.hidden = YES; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; [cell.defaultSwitch setEnabled:NO]; NSMutableArray *dictionary = [contents objectAtIndex:indexPath.row]; NSLog(@"dict dict :%@",dictionary); // cell.nameLabelCell.text = [dictionary valueForKey:@"VideoName"]; cell.userName.text = [dictionary valueForKey:@"User"]; NSString *defaultVideo = [dictionary valueForKey:@"DefaultVideo"]; if ([defaultVideo isEqualToString:@"1"]) { [cell.defaultSwitch setOn:YES animated:YES]; } else { [cell.defaultSwitch setOn:NO animated:YES]; } [cell.defaultSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; cell.thumbImg.image = [arrayimage objectAtIndex:indexPath.row]; VideoNameTextField.hidden = YES; return cell; } - (void)setState:(id)sender { state = [sender isOn]; // NSString *rez = state == YES ? @"YES" : @"NO"; NSLog(@"state.........:%d",state); } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"height:%f",uploadCustomcell.frame.size.height); return 207; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSMutableArray *dictionary = [contents objectAtIndex:indexPath.row]; NSLog(@"Dictionary:%@",dictionary); NSLog(@"indexpath:%@",indexPath); // NSLog(@"at index%d obj:%@",indexPath.row,dictionary); NSString *nameDetails = [dictionary valueForKey:@"VideoName"]; guid = [dictionary valueForKey:@"GUID"]; detailsNameLbl.text = nameDetails; detailsVehImg.image = [arrayimage objectAtIndex:indexPath.row];; } - (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [contents removeObjectAtIndex:indexPath.row]; [tabelView1 reloadData]; } } 

试试这个: [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

你也必须使用这个方法:

 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [contents removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; //[tabelView1 reloadData]; 

}