我有一个UITableViewController
的问题,当 View 出现时,我异步执行一些计算,这将导致表中特定行的更新。
在viewWillAppear
函数内部,我计算需要更新的必要行,如下所示:
- (void)reloadPaths:(NSMutableDictionary *)bookingsDict
{
NSMutableArray* indexArray = [NSMutableArray array];
int i = 0;
for (NSString *dateKey in self.eventsToShow) {
NSMutableDictionary *venues = [bookingsDict objectForKey:dateKey];
if (venues) {
int j = 0;
NSArray *events = [self.eventsToShow objectForKey:dateKey];
for (DCTEvent *event in events) {
NSString *venueIdString = [NSString stringWithFormat:@"%@", event.eventVenueId];
if ([venues objectForKey:venueIdString]) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
[indexArray addObject:indexPath];
}
j++;
}
}
i++;
}
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];
}
但是,我注意到
cellForRowAtIndexPath
函数永远不会被调用,并且单元不能正确更新。知道可能是什么问题吗?编辑:我只是注意到,如果我滚动出应该更新的单元格 View ,那么当我滚动回 View 时它就会更新。有没有办法在查看时对其进行更新?
最佳答案
包裹起来怎么样?
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];
这是我发现的一些类似问题。
cellForRowAtIndexPath isn't called after reloadRowsAtIndexPaths
UITableView's reloadRowsAtIndexPaths: (NSArray *) indexPaths failing to cause a reload unless you call it twice?
希望这可以帮助。