Domanda

Ordinamento di una semplice domanda.Ho una tableview in un navigationcontroller.Quando mi tocco una cella, si spinge un view controller con le informazioni della cella, in modo da poterli modificare in vista nuovi.Ora thats di lavoro corretta (si può chiamare il informationpath:"rootviewcontroller -> spinto viewcontroller").Ma quando faccio clic su salva nella nuova vista, voglio i valori modificati per viaggiare indietro nel rootviewcontroller prima di chiamare popviewcontroller (informationpath:"spinto viewcontroller -> rootviewcontroller"), così modificato, è possibile visualizzare i valori in tableview.

Che cosa è il corretto approccio a questo?

EDIT:

pushViewController e popViewController sta lavorando.Ho solo chiesto per l'approccio migliore per ottenere la modifica di informazioni al rootViewController per la visualizzazione in tableview, quando il pulsante di Salvataggio (popViewController) è stato chiamato.Credo che mi limiterò a modificare il pList con le nuove informazioni direttamente dalla spinto viewController.Anche se io preferirei l'invio di nuove informazioni per la rootViewController e farlo gestire l'accesso al pList file.

È stato utile?

Soluzione

Ho la stessa situazione - due tableviews.Il primo TV consente di visualizzare un elenco di record di database e quando uno è sfruttato passa attraverso il secondo TableView che mostra i dettagli del record.Lo faccio premendo i dettagli TableViewController sul controller di navigazione stack.Finora, in modo da andare e abbastanza semplice.

Il problema che ho riscontrato è che dopo l'aggiornamento del record nella tabella dettagli vista (controller), ho voluto lasciare che l'elenco table view controller sapere, in modo che si potrebbe aggiornare la lista dei record.

La prima cosa che ho fatto è stato aggiungere una proprietà per i dettagli table view controller in modo che quando una riga è stata selezionata nell'elenco di record, l'elenco controller potrebbe passare i dati principali entità gestita per i dettagli controller.

Allo stesso tempo, ho anche aggiunto la lista controller come un osservatore di dati fondamentali, modificare eventi come questo:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dataSaved:) name:NSManagedObjectContextDidSaveNotification object:nil];

Quindi, se la tabella dettagli view e controller di aggiornare il record, l'elenco controller è dataSaved: metodo chiamato, il passaggio di un NSNotification oggetto.

Nel dataSaved: metodo di esaminare l'oggetto e se i dati di base dell'entità che viene modificato è l'elenco aggiornato, quindi ho impostato un flag per segnalare un aggiornamento è necessario.Comunque se c'è un record inserito in elenco, significa che un nuovo record è stato creato e inserito nel database, in modo che un flag è impostato per attivare una ricarica completa della lista visualizzazione della tabella.

Quando l'utente torna alla lista view controller, il viewDidAppear: metodo viene attivato.In questo metodo di esaminare le bandiere e chiamare

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

per ricaricare il record specifico se il record è stato aggiornato, o di raccontare la vista tabella per fare una ricarica completa se non c'è un inserimento di un nuovo record.

Finalmente ho quindi rimuovere la lista controller come un osservatore di dati fondamentali, le notifiche perché non è più interessato.

Non so se questo è il metodo raccomandato per fare questo, ma finora a lavorare per me.

Altri suggerimenti

Si può cercare di reloadData prima popViewController ma si deve inserire un codice.

Tutti i UIViewControllers hanno un metodo navigationController. Quando si preme un controller vista di un controller di navigazione, che la proprietà è impostata su punto al controller di navigazione.

Quindi, basta chiamare [self.navigationController popViewControllerAnimated:YES]; nel controller della vista.

Inoltre, fare parere non confondere e vista controllori. Quando si fa clic su Salva nella vista, è necessario assicurarsi che il pulsante Salva chiama un metodo sul controller della vista, che a sua volta comunica con il controller di navigazione.

Su toccando una fila Si sta per nuova vista con informazioni appropriate.

Qui eseguire alcune operazioni come la modifica dei dati. Quindi, prima Salvare le modifiche su Fare clic sul pulsante Salva (Chiamando un IBAction) e in questo metodo IBAction controllerà wheter (le modifiche vengono salvate con successo) quindi chiamare

[self.navigationController popViewControllerAnimated: YES];

E sì che si ricarica da tavolo databese aggiornati (per questo cambiamento array di dati chiamando il metodo database nel metodo viewWillAppear).

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