作为Apple Doc说,
Reloading a row causes the table view to ask its data source for a new cell for that row.
我将 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");
}
在上述两个函数之间,我重新加载目标单元格:
case NSFetchedResultsChangeUpdate: {
if (indexPath) {
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
我在 Line1563 处设置了一个断点,以检查 reloadRowsAtIndexPaths
是否已被调用,但在那之后,- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath * )indexPath
未被调用。
所以,我的手机无法更新。
谁能告诉我为什么?谢谢。
最佳答案
将其包裹在:
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];
关于iphone - reloadRowsAtIndexPaths 后未调用 cellForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17439383/