删除UITableView行问题

时间:2011-02-01 23:26:23

标签: iphone objective-c cocoa-touch

我遇到了一个问题,我看到很多人都有...但是没有一个修复程序对我有用。但是当我在代码中放入NSLog命令时,我确实发现了一些奇怪的事情。

我有标准的删除方法:

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

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.recipes removeObjectAtIndex: indexPath.row];
        [tableView beginUpdates];
        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [tableView endUpdates];

    }

}

recipes是保存数据源的数组。

理论上这应该可以正常工作,但我收到错误:

invalid number of rows in section 1.  The number of rows contained in an existing section after the update (9) must be equal to the number of rows contained in that section before the update (10), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted).

但是我知道这会分崩离析,当我在numberOfRowsInSection中添加一个NSLog时,我看到该方法是从上面的方法中调用两次的。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSLog(@"THIS CALLED TWICE  %i",[recipes count] );
    return [recipes count];
}

任何人都知道还有什么可能导致numberOfRowsInSection方法触发两次?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

写完之后,我看到我有以下内容:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 2;
}

显然,为每个部分调用numberOfRowsInSection ...将代码更改为:

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        // Return the number of sections.
        return 1;
    }

修正了问题。