Próbuję nauczyć się Swift i staram się opracować słynną aplikację do obsługi notatek.Czy prepareForSegue właściwy sposób przekazywania wartości między kontrolerami widoku
Istnieje tablica powiązana z widokiem tableview i innym widokiem do dodawania notatek. W drugim widoku zdarzenia zdarzenia textfieldbreak wyzwala segue i wraca do tableview.
Chciałem się dowiedzieć, czy to jest właściwa droga. Ponieważ w ten sposób manipuluję zmienną w innym kontrolerze widoku. Nie jestem mistrzem MVC, ale czułem, że jest źle. Oto mój fragment kodu:
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 ?? "");
}
}
}
Dziękuję.
Dlaczego * Czujesz się źle? To jest właściwy sposób. Kontrolery są używane do zarządzania danymi i widokami tych danych, więc gdy pchnięcie segue (lub pop) jest kolejną kontrolerą widoku, rozsądne jest przekazanie pewnych danych pomiędzy źródłem a miejscem docelowym. –
Jest to zdecydowanie bardzo popularny sposób przekazywania danych między kontrolerami widoku i nie powinieneś się martwić o jego używanie. Mnóstwo [szanowanych programistów] (http://oleb.net/blog/2012/02/passing-data-between-view-controllers/) to robią. Nie jest to jednak jedyna prawdziwa droga i istnieją inne opcje. O ile mi wiadomo, Swift nie przynosi nic specjalnego do stołu w tym zakresie, więc powinieneś sprawdzić [istniejące pytanie Celu C] (http://stackoverflow.com/questions/5210535/passing-data-between -view-controllers). –