删除UITableView单元格

时间:2013-05-15 19:49:20

标签: xcode uitableview ipad

我正在使用UISplitViewController创建一个小型ipad应用程序,其UIMasterViewControllerUIDetailViewController。我删除了UITableView附带的UIMasterViewController,并通过从Xcode Objects面板中拖放一个来创建我自己的UITableView。我已经成功填充UITableView数据成功但是当我尝试从中删除一个单元格或记录时,我似乎得到一个“线程1:信号SIGABRT”错误。

下面是我的编辑按钮代码。 (这是一个自定义按钮):

//Edit Button
int cnt = 0;
- (IBAction)buttonEditPressed:(id)sender {

    if (cnt == 0){
    [self.myTableView setEditing:YES animated:YES];
    _buttonEdit.title = @"Done";
        cnt++;
    }
    else if (cnt == 1){
        [self.myTableView setEditing:NO animated:YES];
        _buttonEdit.title = @"Edit";
        cnt--;
    }

}

下面的代码是删除应该发生的地方(但是给我错误的代码):

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(editingStyle == UITableViewCellEditingStyleDelete){

        [self.moduleTitleStack removeObjectAtIndex:indexPath.row];
        [self.myTableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    [self.myTableView reloadData];

}

[UPDATE] numberOfRowsInSection实现:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
    //return [sectionInfo numberOfObjects];
    return [_numberOfRows count];
}

我认为这可以胜任,但不知道为什么我会收到这个错误。

1 个答案:

答案 0 :(得分:0)

答案:

如果您刚刚删除了行而没有其他更改,则无需执行[tableView reloadData];

此外,您遇到的崩溃是您要从self.moduleTitleStack删除对象,但行计数正在检查_numberOfRows。 (我猜他们是不同的数组),这就是你得到的问题。您需要更新_numberOfRows以反映表格视图的新设置

了解更多有关您获得的例外情况的一般提示:

转到左侧的断点面板,然后点击左下角的Add&gt; Exception Breakpoint,然后点击OK。每当抛出异常时,调试器都会停止,为您提供有关异常的一些信息,以及它在何处以及如何发生的确切堆栈跟踪