2011-10-19 12 views
10

Ho un paio di NSMutableArrays che ho bisogno di cancellare quando si aggiorna la vista. Tuttavia, quando provo a eliminarli con [array removeAllObjects];, la mia vista tabella si arresta in modo anomalo a causa di index beyond bounds error. Tutto quello che faccio con l'aggiornamento, è chiaro gli array e chiamano la stessa funzione di viewDidLoad per riempire il tableview. [tableView reloadData] non viene chiamato fino all'ultima riga del metodo.Cancella NSMutableArray per un aggiornamento

EDIT: E 'molto probabile che il problema è questo: io uso un pull per aggiornare lib esterni, e quando si scorre su e rilascia il tavolo, rimbalza verso il basso e quindi l'UITableView cerca di caricare la cella successiva, che non può perché la matrice è deselezionata, ed è ancora in fase di caricamento.

Risposta: removeAllObjects dagli array, eseguire immediatamente self.tableView reloadData e continuare con il resto.

+0

Mostraci il tuo codice – Nekto

risposta

38

il problema potrebbe essere dovuto a numberOfRowsInSection che restituisce un conteggio e l'array dell'origine dati è vuoto.

basta chiamare [array removeAllObjects] e in numberOfRowsInSectionreturn [array count].

Spero che risolva il problema. Buona fortuna!!!

+0

ringraziare un uomo molto :) – Supertecnoboff

+0

è removeAllObjects uguale rilascio quell'oggetto? –

0

Quando si aggiorna la matrice, controllare innanzitutto se ha l'oggetto o no & quindi reinizializzare l'array e rilasciarne uno.

3

cancello cellule dal mio punto di vista tabella nel seguente manner-

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init]; 
      for(unsigned int i = 0; i < [self.array count]; i++) 
      { 
       [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
      } 

[self.tableView beginUpdates]; 
[self.array removeAllObjects]; 
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft]; 
[self.tableView endUpdates]; 
[indexPathsToDelete release]; 
Problemi correlati