Wie kann ich den übergeben Wert zwischen NavigationController und ViewController mit StoryBoard?
Ich habe ein problem,
Das folgende ist meine StoryBoard
der erste Controller ist ein TabBarController
,
und Sie Zusammenhang mit Einer (ViewController).
A ist ein ViewController
,
B ist ein NavigationController
Eine Seite wechseln auf die B modal
segue
C ist eine ViewController
C wechselt zu einer anderen Seite, indem push
also brauche ich einen NavigationController
OK, ich will pass " - Wert von A zu C,
jetzt kann ich pass den Wert von A nach B durch prepareForSegue
,
Jedoch, da B und C haben eine Beziehung, aber nicht segue,
So kann ich 'T pass" - Wert von B zu C, indem Sie prepareForSegue
!!!
Wie kann ich den übergeben Wert zwischen NavigationController und ViewController mit StoryBoard?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Storyboard Bild ist ein wenig irreführend hier.
Beim übergang zu B, eigentlich Sie sind segueing zu den B/C combo als NavControllers haben immer mindestens einen viewController in Ihrem stack (Ihre
topViewController
und Ihre[viewControllers objectAtIndex:0]
).So, Sie haben eine Beziehung, die direkt von A nach C.
Wie Sie den Zugriff, die Steuerung hängt davon ab, ob Ihre segue ist modal oder push. In Ihrem Fall ist es modal, aber ich werde beschreiben, so können Sie den Unterschied sehen.
In jedem Fall, die übertragung von Daten von C ist, müssen Sie zum deklarieren einer Eigenschaft in ihm ist die header-Datei
push segue
In einem push segue, ist es eigentlich C ist, dass die destinationViewController, nicht B. In der Tat die push-segue ist geregelt durch B, das ist der UINavigationController für beide A und C. der code hinter Der push-segue ist von der form
[self.navigationController pushViewController:otherViewController];
In AviewController die prepareForSegue:
Ist es möglich in das storyboard, um einen push-segue Linie zwischen zwei viewControllers, die nicht eine gemeinsame UINavigationController. Jedoch, wenn Sie dies ausführen, erhalten Sie eine crash-Fehler:
Hinter jedem guten push segue liegt eine Navigations-Controller.
modal segue
Den code, versteckt hinter einer modal-Segue ist die UIViewController-Methode
- (void)presentViewController:(UIViewController *)viewControllerToPresent
In einem modal-segue zu einem NavController/ViewController-combo, die Ziel-viewController ist, was die segue Linie Punkte zu. Wenn es Punkte zu einem viewController, das ist der Wechsel.destinationController (und die UINavigationController werden ignoriert, das ist nicht das, was Sie hier wollen); wenn es die Punkte zu einem UINavigationController, wie in diesem Fall, dass wird es destinationController. Aber es ist immer noch einfach Zugriff auf die viewController, wie es sein wird, der navigation-Controller ist topViewController.
In AviewController die prepareForSegue:
Beachten Sie, dass in diesem Fall haben wir die Verwendung der alten Stil [[Nachricht] syntax]. Wenn wir verwendet moderne.Eigenschaft.syntax bekommen wir einen compile-Fehler. Das ist, weil das Programm nicht wissen, die Art der desinationViewController, und weigert sich zu akzeptieren topViewController als Eigenschaft von einem unbekannten Typ. Aber es ist gerne [send [Echtzeit-Nachrichten]] an einen unbekannten Typ. Wir haben auch zu (typecast*) zur Vermeidung von compiler-Warnungen.