2009-03-30 7 views
5

Tutti continuano a scrivere sull'eliminazione di una sezione. Bene, non riesco a ottenere uno aggiunto.Aiuto per inserire una nuova sezione in un TableView

Attualmente, sto provando come questo (che non riesce con NSInternalInconsistencyException):

UITableView *tv = (UITableView *) self.tableView; 

if ([tv numberOfSections] == 1) 
{ 
    [tv beginUpdates]; 
    [tv insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop]; 

    NSLog(@"Inserted.. Brace for impact."); 
    [tv endUpdates]; 
} 

NSLog(@"Section count after update: %d", [tv numberOfSections]); // Never reached 

Se ho ragione, l'inserimento di una sezione con indice 0 dovrebbe porre in cima, urtando tutte le altre sezioni verso il basso, destra? Bene, se scrivo il numero di sezioni subito dopo le sezioni di inserimento, sembra che non ci sia alcun cambiamento nel numero di sezioni.

Qualche idea?

Johan

risposta

3

Sì, grazie a tutti e due.

Dopo un po 'di giocoleria, sono finalmente riuscito a farlo funzionare. Era una combinazione di entrambi i tuoi suggerimenti. I nuovi dati non sono mai stati inseriti, ma anche io non ho dovuto aumentare il conteggio delle righe per il primo elemento inserito, ma solo il secondo.

2

Hai aggiornato anche la tua origine dati? Non puoi semplicemente aggiornare la vista tabella senza aggiornare anche i dati sottostanti.

+0

Sì .. hm. Sì, lo faccio, sempre la stessa eccezione. Grazie comunque. – Johan

2

È necessario aggiornare il messaggio numberOfSectionsInTableView della classe UITableViewDataSource.

+0

Bene, faccio un [numero di elementi] per vedere se c'è un motivo per aumentare il numero di sezioni, se qualche elemento è aggiunto, restituisce 2, altrimenti 1. O intendi la necessità di inviare un messaggio attivo numberOfSectionsInTableView? – Johan

+0

No. Non intendevo la messaggistica attiva numberOfSectionsInTableView. Intendo quello che apparentemente stai già facendo: restituire il giusto numero di sezioni sull'implementazione di quel messaggio. –