Domanda

Ho un DB SQLite contenente compiti. Ogni attività ha una data, e non ci può essere più attività per ogni data.

La mia app carica i dati per un mese solo in un dizionario mutevole. La chiave di ogni voce del dizionario è una stringa del giorno del mese (1, 2, 3 ... 31). Il valore corrispondente è un array di compiti di tale data. Così, per ogni giorno del mese, v'è una serie di 0 o più attività.

Il dizionario mutabile è dichiarata nel viewcontroller radice. Il viewcontroller radice in Interface Builder è il dataSource e delegato della vista tabella. In qualche modo l'applicazione sa che il viewcontroller radice ottiene i suoi dati dal dizionario mutevole. Non specificare questa, quindi mi chiedo cosa sarebbe successo se non ci fosse più di un dizionario, o forse un dizionario e una matrice mutevole? Tuttavia, questo funziona senza ulteriori cablaggi. Quando il viewcontroller radice carica i dati nella tabella, ogni intestazione di sezione contiene la data come testo, ed elenca tutti i compiti in singole celle sottostanti. Alcune intestazioni non hanno cellule.

Ora, per modificare un compito, ho un "ingresso" viewcontroller. Selezione di un compito nella tabella provoca l'viewcontroller ingresso per caricare queste informazioni compito nei campi di testo, in cui io possa cambiare il titolo, data, dettagli, o contrassegnare come eseguita. Dopo la modifica, l'entrata viewcontroller scarica, la radice (tabella) ricariche viewcontroller, tableView della vista chiama reloadData ed i cambiamenti sono evidenti.

Ecco il problema: Se posso aggiungere una nuova attività facendo clic sul pulsante + sul controller di navigazione, mi ci vuole per lo stesso viewcontroller ingresso, dove ho impostato i dati. Torno alla viewcontroller radice tramite gli stessi metodi durante la modifica dei dati esistenti. Eppure nessuna nuova cella è stato creato per i nuovi dati! Se chiudo e riapro l'applicazione, i nuovi dati viene visualizzato correttamente.

Dal momento che gli aggiornamenti dei dati e gli inserti vengono scritti nel DB da matrici del dizionario quando l'applicazione si chiude, questo significa che il nuovo elemento veramente inserito in uno degli array.

Sommario: Modifica elemento matrice esistente, e la nuova dati vengono visualizzati quando la tabella ricarica i suoi dati. Aggiungere un elemento dell'array e viene ignorato quando la ricarica della tabella.

Che cosa c'è che non va?

È stato utile?

Soluzione

Si potrebbe aggiungere una riga come questa nel vostro UITableViewController:

[self.tableView reloadData];

In questo modo l'intero UITableView da ricaricare. Tuttavia, credo che il metodo preferito è:

[self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: YES];

Per far funzionare tutto questo, è necessario sapere dove apparirà la riga (s) (l'array di NSIndexPaths).

Può essere più facile per aggiornare l'UITableViewController dall'interno del "entry" ViewController.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top