UITableView:为什么删除后没有更新“行数”?

时间:2012-04-26 21:29:15

标签: objective-c ios xcode4

这是我的代码,它应该删除所选行。它导致应用程序崩溃,因为它声称行数不正确。我检查过,这是不正确的;表中的行已被删除,但显然行数尚未更新(代码确实被击中)......这怎么可能? (我有另一个UITableViewController与确切的代码,它的工作原理)。我该如何解决?

if (editingStyle == UITableViewCellEditingStyleDelete) {

    //  remove row from the table
    SQLite *sql = [[SQLite alloc] init];
    [sql deleteReadingsRow: indexPath.row];

    // Delete the row from the data source
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}   

以下是确定行数的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    SingletonListOfReadings  *rShareInstance = [SingletonListOfReadings sharedInstance];

    return rShareInstance.listOfReadings.count; // Return the number of rows in the section
}

2 个答案:

答案 0 :(得分:0)

我发现了问题...我依赖于单件(SingletonListOfReadings),当在d / b表中删除行时,该单件没有被重置。

答案 1 :(得分:0)

当您发现问题时,应该考虑使用NSFetchedResultsController。只需很少的工作,它就可以在添加,删除或修改行时自动更新表。它通常比依赖于保持单体同步的解决方案更可靠。有许多将它与表格一起使用的例子。