Sto cercando di imparare Swift e sto cercando di sviluppare la famosa applicazione per le note.È prepareForSegue il modo giusto di passare il valore tra i controller di vista
C'è una matrice associata a una vista tabella e un'altra vista per aggiungere note. Alla seconda vista l'evento textfieldshouldreturn attiva un seguito e torna a tableview.
Volevo sapere se questo è il modo giusto. Perché facendo in questo modo sto manipolando una variabile in un altro controller di vista. Non sono un maestro MVC ma mi sembrava sbagliato. Ecco il mio snippet di codice:
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.performSegueWithIdentifier("backSegue", sender: self)
return true
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "backSegue"){
let navController = segue.destinationViewController as UINavigationController;
let myController = navController.topViewController as NotesTableViewController;
if(self.ourTextField?.text != nil || self.ourTextField?.text != ""){
myController.notes.append(self.ourTextField?.text ?? "");
}
}
}
Grazie.
Perché * senti * è sbagliato? È il modo corretto I controller ara sono usati per gestire i dati e le visualizzazioni di questi dati, quindi quando un push successivo (o pop) un altro viewcontroller è ragionevole passare alcuni dati tra l'origine e la destinazione. –
Questo è sicuramente un modo molto comune di trasmettere dati tra i controller di visualizzazione e non dovresti preoccuparti di usarlo. Un sacco di [sviluppatori ben rispettati] (http://oleb.net/blog/2012/02/passing-data-between-view-controllers/) lo fanno. Non è l'unico vero modo, però, e ci sono altre opzioni. Per quanto ne so, Swift non porta nulla di speciale al tavolo in questo senso, quindi dovresti dare un'occhiata alla [domanda Objective C esistente] (http://stackoverflow.com/questions/5210535/passing-data-b -view-controller), anche. –