Prova a chiamare 'deleteRowsAtIndexPaths', un metodo di UITableView, proprio dopo aver eliminato il modello dall'origine dati. Ad esempio, se si sta eliminando una riga in modalità di modifica, è possibile scrivere qualcosa come il seguente codice. Si noti che la prima riga del 'se' dichiarazione rimuove l'oggetto dall'origine dati, e la seconda linea pulisce la tabella:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[[[[[ItemsStore sharedStore] parameterArray] objectAtIndex:indexPath.section] objectForKey:@"data"] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
fonte
2013-08-30 22:47:07
Sei sicuro reloadData è costoso? Mi aspetto che sia abbastanza economico, purché non si utilizzino altezze variabili. Sta andando a interrogare quante sezioni hai nella tabella, quante righe in ogni sezione, ed elimina la sua cache. Ma le celle saranno ricaricate su richiesta, il che significa che solo le celle visibili dovrebbero essere ricaricate. –
Se vuoi aggiornare tutte le celle _visible_ allora reloadData non dovrebbe essere ** ** costoso. – Nevin
@StevenFisher Sì nel mio caso è molto costoso, ho molti calcoli, come l'altezza richiesta delle celle e alcune chiamate web. Quindi probabilmente avrei dovuto dire che è costoso per il mio caso. – aryaxt