通过导航控制器推送视图控制器后,视图层次结构发生了变化?

时间:2016-07-27 05:58:14

标签: ios uinavigationcontroller hierarchy pushviewcontroller

视图层次结构存在问题。这是我的应用程序的流程。 enter image description here

当应用启动时,视图控制器“A”是可见的。之后故事板“B”通过“ StoryBoard参考(推送)”加载,其中存在另一个导航控制器并加载主屏幕。单击主屏幕中的菜单按钮侧面板可见。

现在当我点击侧面板菜单项视图控制器“B”时被按下。此视图控制器在主屏幕下推送,不可见。

enter image description here

归属控制器下可以看到

帮助视图控制器。我希望帮助视图控制器应该位于家庭控制器之上 我不明白会发生什么问题.. 任何帮助将不胜感激..

3 个答案:

答案 0 :(得分:0)

如果您从图像中的侧面板显示推动视图控制器,则永远不会推动,因为它不在导航控制器中。

答案取决于您如何显示侧边菜单,但取决于假设

您需要做的是设置根视图控制器或保持导航控制器的引用并从那里推送

答案 1 :(得分:0)

如果您正在展示侧边菜单,那么它不在dismiss上,因此您应首先 - (IBAction)settingClick:(id)sender { SettingViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsScreen"]; [self dismissViewControllerAnimated:NO completion:^{ [self.vc.navigationController.navigationController pushViewController:svc animated:YES]; }]; } 此侧边菜单,在完成后您应该按下新的视图控制器(说B或帮助)。我正在编写我在我的项目中用于演示的代码片段,

setting view controller

上述方法在解除navigation controller

后,在当前side menu上推送self.vc

现在重要的是previous viewcontroller这是SideMenuViewController(我认为是你的情况下的家庭控制器)的对象,在哪个侧面菜单上。

所以我的 @property (nonatomic,strong) UIViewController *vc; 有一个属性,

self

我使用前一个视图控制器中的 SideMenuViewController *smvc = [self.storyboard instantiateViewControllerWithIdentifier:@"sideMenu"]; smvc.modalPresentationStyle = UIModalPresentationOverCurrentContext; [self presentViewController:smvc animated:NO completion:^{ smvc.vc = self; }]; 设置(在您的情况下来自Home视图控制器),类似于

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

我使用了sample.txt,即两个导航控制器,因为我在视图层次结构中有两个导航控制器来推送这个新的视图控制器。

您可以根据您的设置管理您拥有多少导航控制器!!

希望这会有所帮助:)

答案 2 :(得分:0)

经过深入挖掘后,我找到了解决方案。

' UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@" Home"捆绑:nil];     RootController * someViewController = [storyboard instantiateViewControllerWithIdentifier:@" RootController"];     [self.navigationController pushViewController:someViewController animated:YES];`

我已将另一个导航控制器设置为窗口的根ViewController,它对我有用。 感谢。