2013-05-01 12 views
11

Ich habe einen View Controller B, der vom Root View Controller A auf den Navigations-Stack geschoben wird und dieser View Controller B muss eine alternative Ansicht anzeigen, wenn diese vorhanden ist Das Modell befindet sich in einem bestimmten Zustand, so dass es modal einen anderen View-Controller C präsentiert. Wenn ich View-Controller CI verlasse, möchte ich auch Controller B ansehen, wenn dieser auch auf dem Nav-Stack ist. Ich würde es gerne so machen, dass es nur 1 Übergang gibt.ios: Wie man einen Modal View Controller ausschaltet und dann einen Pushed View Controller öffnet

Irgendwelche Ideen?

+0

Verwenden Sie XIBs oder Storyboard zum Layout Ihrer Ansichten? Es klingt als wäre es am besten, wenn Sie die Tertiäransichten innerhalb Ihres Root-View-Controllers instanziieren und sie dann als Unteransichten hinzufügen. Diese können dann angezeigt oder ausgeblendet werden. Dies kann viel flexibler sein, als modale Ansichten zu präsentieren und zu verwerfen. – ninehundredt

+0

Mit einem Storyboard wollte ich einen anderen View - Controller verwenden, um den alternativen Status anzuzeigen, da die Apple - Dokumentation darauf hinwies, dass es eine alternative Benutzeroberfläche bietet, wenn sie als separate Ansicht angezeigt wird (in der Diskussion von separate Landschaftsansichten). Ich denke, dass die tatsächlichen Änderungen, die ich brauche, wären einfacher zu implementieren über separate Ansicht, die auf der aktuellen Ansicht eingeblendet wird, so werde ich versuchen, Ihren Vorschlag – Heisenberg

Antwort

18

In dem von Ihnen geposteten Szenario ist der präsentierende Ansichtscontroller für den Ansichtscontroller C tatsächlich der Navigationscontroller. Sie können also B abbrechen und sich dann selbst abmelden. Dieser Code ist in View-Controller C:

-(IBAction)goBackToA:(id)sender { 
    [(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Wenn Sie ein Storyboard verwenden, können Sie das gleiche tun, springen mit einem Abroller segue zu A direkt zurück.

+0

danke, nachdem ich es einige Gedanken denke ich, was ich brauche könnte leichter mit nur getan werden Ein View-Controller und das Ändern seiner Subviews je nach Modellzustand, ich werde versuchen, wenn ich 2 separate View-Controller verwenden muss – Heisenberg

+0

Genau das, was ich brauchte! – Nerrolken