2016-07-27 31 views
0

Es gibt ein Problem in der Ansichtshierarchie. Hier ist der Ablauf meiner App. enter image description hereAnsichtshierarchie geändert, nachdem ein View-Controller über den Navigationscontroller gedrückt wurde?

Wenn App gestartet wird Ansicht Controller "A" ist sichtbar. Danach wird das Storyboard "B" geladen durch "StoryBoard Reference (Push)", wo ein anderer Navigationscontroller vorhanden ist und der Startbildschirm geladen ist. Ein Klick auf die Schaltfläche Menü im Startbildschirm Das Seitenfenster ist sichtbar.

Wenn ich nun auf die Menüoptionen auf der Seite klicke Ansicht Controller "B" wird gedrückt. Dieser View-Controller wird auf den Startbildschirm geschoben und ist nicht lesbar.

enter image description here

Hilfe anzeigen contoller ist sichtbar unter Heimsteuerung. Ich möchte Hilfe View Controller sollte auf Home-Controller kommen. Ich verstehe nicht, was Frage kommt .. Jede Hilfe geschätzt wird ..

+0

Drücken Sie Seitenmenü auf Navigation Controller? oder präsentiert es? – Lion

+0

Ich präsentiere Side Panel auf Navigation Controller, danach auf Menü Aktion bestimmte Ansicht Controller gedrückt wird. –

+0

Überprüfen Sie meine Antwort !! – Lion

Antwort

0

Wenn Sie View-Controller von Seitenwand zeigt in Bild schieben, wird nie schieben, weil sie nicht in der Navigation-Controller ist.

die Antwort hängt davon ab, wie Sie Ihre Seite im Menü zeigt aber von Annahmen

, was Sie tun müssen, ist Controller Stammansicht setzen oder Referenz der Navigation-Controller halten und schieben von dort

+0

Danke für die Antwort, Side Panel ist auf Home Controller vorgestellt. Nach dem Debuggen wurde mir klar, dass der Help View Controller auf den Navigationscontroller geschoben wurde, aber er befindet sich unter Home View Controller. Irgendwelche Hilfe? –

0

Wenn Sie präsentieren Side-Menü dann ist es nicht auf navigation controller, so sollten Sie zuerst dismiss dieses Seitenmenü und auf die Fertigstellung davon sollten Sie neue Ansicht Controller drücken (sagt B oder Hilfe). Ich bin meinen Code-Schnipsel zu schreiben, die ich für die Demonstration in meinem Projekt verwende,

- (IBAction)settingClick:(id)sender { 



SettingViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsScreen"]; 



[self dismissViewControllerAnimated:NO completion:^{ 


    [self.vc.navigationController.navigationController pushViewController:svc animated:YES]; 


     }]; 


} 

Above Methode Push setting view controller auf aktuellen navigation controller nach side menu

Jetzt wichtigen Sache zu entlassen ist self.vc dies ist die Aufgabe von previous viewcontroller (Heim Controller in Ihrem Fall denke ich), auf welcher Seite Menü wurde vorgestellt.

Also meine SideMenuViewController hat eine Eigenschaft wie,

@property (nonatomic,strong) UIViewController *vc; 

, die ich mit self aus vorherigen View-Controller (in Ihrem Fall from Home-View-Controller) so etwas wie,

SideMenuViewController *smvc = [self.storyboard instantiateViewControllerWithIdentifier:@"sideMenu"]; 



      smvc.modalPresentationStyle = UIModalPresentationOverCurrentContext; 
      [self presentViewController:smvc animated:NO completion:^{ 


       smvc.vc = self; 

      }]; 

und ich bin Einstellung habe verwendet [self.vc.navigationController.navigationController pushViewController:svc animated:YES]; dh zwei Navigationscontroller zu drücken, weil ich zwei Navigation Controller in meiner Ansicht Hierarchie haben, um diese neue Ansicht Controller zu schieben.

Sie können das nach Ihrer Einrichtung verwalten, wie viele Navigationscontroller Sie haben !!

Hope this helfen :)

+0

Ich habe das verwendet, aber keinen Erfolg. –

+0

. Ich habe auch folgende Vorgehensweise verwendet. [self performSelector: @selector (pushViewController) withObject: nil afterDelay: 1.0]; - (void) pushViewController { RGNavigationController * navVC = (RGNavigationController *) self.frostedViewController.contentViewController; HelpController * helpVC = [self.storyboard instantiateViewControllerWithIdentifier: @ "HelpController"]; if ([navVC.topViewController isKindOfClass: [HelpController-Klasse]]) { [self.frostedViewController hideMenuViewController]; Rückkehr; } [navVC pushViewController: helpVC animiert: YES]; } –

0

Nach viel zu graben, fand ich Lösung.

'UIStoryboard * Storyboard = [UIStoreboard storyboardWithName: @ "Home" Bündel: nil]; RootController * someViewController = [Storyboard instantiateViewControllerWithIdentifier: @ "RootController"]; [self.navigationController pushViewController: someViewController animiert: YES]; `

Ich habe einen anderen Navigationscontroller als root ViewController des Fensters gesetzt und es funktionierte für mich. Danke.