Jak Apple Doc powiedziałcellForRowAtIndexPath nie nazywa po reloadRowsAtIndexPaths
Przeładunki wiersz powoduje, że widok tabeli zadać swoje źródło danych dla nowego komórki dla tego wiersza.
połączyć UITableView z 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");
}
Pomiędzy tymi dwoma funkcjami, to przeładowanie komórki docelowe:
case NSFetchedResultsChangeUpdate: {
if (indexPath) {
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
Ustawiam punkt przerwania w linii 1563, aby sprawdzić, czy został wywołany reloadRowsAtIndexPaths
, ale potem nie został wywołany - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
.
Moja komórka nie mogła zostać zaktualizowana.
Ktoś może mi powiedzieć, dlaczego? Dzięki.
Ponowne ładowanie komórki docelowej? To jest coś, o czym nigdy nie słyszałem. Nawet w Visual Basic ... –
Metoda, w której wywołujesz 'reloadRowsAtIndexPaths: withRowAnimation:' to 'controller: didChangeObject: atIndexPath: forChangeType: newIndexPath:'? – leoformaggio
@leoformaggio tak, oczywiście. –