Come Apple Doc detto,cellForRowAtIndexPath non è chiamato dopo reloadRowsAtIndexPaths
ricaricamento fila provoca la visualizzazione tabella per chiedere la sua origine dati per un nuovo cella per quella riga.
I combinano UITableView con 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");
}
Tra queste due funzioni, ricarico della cellula bersaglio:
case NSFetchedResultsChangeUpdate: {
if (indexPath) {
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
Ho impostato un punto di interruzione su Line1563, per verificare che sia stato chiamato il reloadRowsAtIndexPaths
, ma successivamente non è stato chiamato - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
.
Quindi, la mia cella non può essere aggiornata.
Qualcuno può dirmi perché? Grazie.
Ricaricare la cella di destinazione? È qualcosa di cui non ho mai sentito parlare. Neanche in Visual Basic ... –
Il metodo in cui stai chiamando 'reloadRowsAtIndexPaths: withRowAnimation:' è 'controller: didChangeObject: atIndexPath: forChangeType: newIndexPath:'? – leoformaggio
@leoformaggio si, certo. –