在reloadRowsAtIndexPaths之后不调用cellForRowAtIndexPath

Jas*_*Lee 6 iphone core-data objective-c uitableview ios

正如Apple Doc所说,

重新加载行会导致表视图向其数据源询问该行的新单元格.

我将UITableView与NSFetchedResultsController结合使用:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
{
    if (self.tableView.isEditing) 
    {
        [self.tableView setEditing:NO animated:YES];
    }
    [self.tableView beginUpdates];
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
    [self.tableView endUpdates];

    [self updateTabItemBadge];
    [self.noDataView setHidden:![self isNoData]];

    WXINFO(@"controllerDidChangeContent");
}
Run Code Online (Sandbox Code Playgroud)

在上述两个函数之间,我重新加载目标单元格:

在此输入图像描述

    case NSFetchedResultsChangeUpdate: {
        if (indexPath) {
            [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
        }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我在Line1563设置了一个断点,检查reloadRowsAtIndexPaths是否已经调用了,但之后- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath没有被调用.

所以,我的手机无法更新.

有人可以告诉我为什么?谢谢.

Ana*_*and 0

您能否使用 [tableView reloadData] 重新加载 tableview 来进行检查?

如果您只想更新一行而不重新加载表,请检查“indexPath”类型。应该是NSIndexPath。