0

ビューの階層に問題があります。ここに私のアプリの流れです。 enter image description hereビューコントローラをナビゲーションコントローラにプッシュした後、ビュー階層が変更されましたか?

アプリが起動すると、View Controller "A"が表示されます。その後、ストーリーボード "B"は "ストーリーボードリファレンス(プッシュ)"でロードされ、別のナビゲーションコントローラが存在し、ホーム画面がロードされます。オンホーム画面のメニューボタンをクリックするサイドパネルが表示されます。

サイドパネルのメニュー項目をクリックすると、コントローラ「B」がプッシュされます。このView ControllerはHome画面の下にプッシュされ、Vsibleではありません。

enter image description here

ヘルプを表示contollerホームコントローラ下に表示されます。私は望むヘルプコントローラを表示は、ホームコントローラの上に来る必要があります。 あなたはサイドパネルからビューコントローラをプッシュしている場合、私は任意のヘルプは..

+0

ナビゲーションコントローラのサイドメニューを押していますか?またはそれを提示する? – Lion

+0

ナビゲーションコントローラーのサイドパネルを提示しています。その後、メニューアクション固有のビューコントローラーがプッシュされます。 –

+0

私の答えをチェック!! – Lion

答えて

0

を理解されるであろう ...来て何の問題を理解していけないが、画像で示し、それは、ナビゲーションコントローラではないので、プッシュすることはありません。

答えは、あなたが何をする必要があるか、あなたのサイドメニューを示す方法ではなく、仮定

から依存あなたが提示されている場合、ルートビューコントローラを設定したり、そこ

+0

答えてくれてありがとう、サイドパネルはホームコントローラーに表示されます。デバッグ後、私はヘルプビューコントローラがナビゲーションコントローラにプッシュされていることを知ったが、ホームビューコントローラの下にある。 –

0

からナビゲーションコントローラとプッシュの参照を保持することですにはありませんので、最初にdismissこのサイドメニューを開いてください。新しいビューコントローラ(Bまたはヘルプ)を押してください。私は私のコードを書いていますside menu

を却下した後、現在のnavigation controller上のメソッドプッシュsetting view controller

- (IBAction)settingClick:(id)sender { 



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



[self dismissViewControllerAnimated:NO completion:^{ 


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


     }]; 


} 

、私はデモのために私のプロジェクトで使用していることをスニペット今、重要なのはself.vcあり、これはprevious viewcontroller(ホームの対象でありますあなたのケースでは私が思う)どのサイドメニューが提示されましたか?

は、だから私のSideMenuViewControllerは、私が何かのように(ホーム・ビュー・コントローラから、あなたのケースで)以前のビューコントローラからselfで設定しています

@property (nonatomic,strong) UIViewController *vc; 

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



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


       smvc.vc = self; 

      }]; 

そして私のような性質を持っています[self.vc.navigationController.navigationController pushViewController:svc animated:YES];つまり2つのナビゲーションコントローラを使用しています。これは、新しいビューコントローラをプッシュするためにビュー階層に2つのナビゲーションコントローラがあるためです。

あなたの設定に応じて、あなたが持っているナビゲーションコントローラの数を管理することができます!これが役立つ

希望:)

+0

私はこれを使用しましたが、成功しません。 –

+0

。私はまた、以下のアプローチを使用しています.. [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 class]]){ [self.frostedViewController hideMenuViewController]; リターン; } [navVC pushViewController:helpVC animated:YES]; } –

0

多くを掘り後、私はこのための解決策を見つけました。

'UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@ "ホーム"バンドル:nil]; RootController * someViewController = [ストーリーボードinstantiateViewControllerWithIdentifier:@ "RootController"]; [self.navigationController pushViewController:someViewController animated:YES]; `

別のナビゲーションコントローラをウィンドウのルートViewControllerとして設定してくれました。おかげさまで

関連する問題