Ich habe eine ViewController
Klasse. Es hat eine Kategorie ViewController (Details)
, die ausführt:Übergeben von Daten zwischen UIViewControllers mit Kategoriekonflikt
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
die Details eines Objekts zu öffnen.
Wenn ich eine neue Schaltfläche zu meiner ViewController
Klasse hinzufügen möchte ich einige Daten wie NSArray *myData
an einen anderen Controller übergeben, sagen wir SearchController
. Jedoch würde mein prepareForSegue
niemals ausführen, da es in ViewController (Details)
ist. Das Hinzufügen von prepareForSegue
zu ViewController
scheint es zu ignorieren.
Wenn ich Version von prepareForSegue
innerhalb ViewController (Details)
Arbeitsgeräte, die für meine SearchController
funktioniert, aber es sieht nicht iVar NSArray *myData
in ViewController
erklärt. Idealerweise würde ich nicht eine neue Datenvar deklarieren wollen, die in ViewController (Details)
gesetzt wird, weil es irrelevant ist.
Wie kann man Daten von einem Knopf tippen, wenn ViewController
nicht ausgeführt wird prepareForSegue
oder ViewController (Details)
sieht die Datenvariable nicht? Irgendwelche Empfehlungen?
Verwenden Sie etwas, um Ihre Daten zuerst wie CoreData, Realm oder statische Referenz zu speichern, spielt es keine Rolle. Wenn Sie für Ihre Daten einen unidirektionalen Datenfluss verwenden, ist es wichtig, dass Sie dieses Problem nie wieder bekommen, da Sie keine Daten zwischen Klassen austauschen müssen. Stattdessen erhalten Sie immer Daten aus einer einzigen Quelle der Wahrheit das ist es. –
Bitte Code anzeigen --- nur der dazugehörige Code --- aus dem VC und der Kategorie. – danh
Und @ JanCássio hat ziemlich genau recht: vcs sollte selbst auf das App-Modell zugreifen. Sie müssen jedoch manchmal Daten weitergeben, wenn der Benutzer beispielsweise einen Aspekt des Modells in vcA auswählt, und vcBs Aufgabe darin besteht, Details darüber zu präsentieren, ist es sinnvoll und notwendig, dass vcA Daten an vcB "weitergibt", sofern es kommuniziert eine Auswahl. – danh