如何从表格视图中删除数据?

时间:2011-02-19 20:41:43

标签: iphone iphone-sdk-3.0 ios4

我设置了导航栏,其中添加了一个添加按钮,可以将数据添加到我的表视图中。我还添加了这一行self.navigationItem.leftBarButtonItem = self.editButtonItem;来创建编辑按钮。通过该方法,我注意到- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath方法。所以我在下面进行了修改,但我的应用程序冻结了。从表中删除数据的正确方法是什么?

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source.
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];


        **[myArray removeObjectAtIndex:[indexPath row]];
        [self.tableView reloadData];**


    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
    }   
}

1 个答案:

答案 0 :(得分:4)

首先尝试从数组中删除数据,然后通知表以删除相应的行。在这种情况下,不需要-reloadData调用:

if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source.
        [myArray removeObjectAtIndex:[indexPath row]];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];  
}