从当前上下文推送导航
Posted
技术标签:
【中文标题】从当前上下文推送导航【英文标题】:Push navigation from current context 【发布时间】:2017-04-19 14:04:07 【问题描述】:嗨,我有两个 Viewcontroller A 和 B,我正在展示 A 控制器中的 B 控制器 A 控制器 A strong>当前上下文,我在下面粘贴了我的代码。我想从 B 控制器推送到 C 控制器,我知道当我们展示时没有分配导航控制器,如果我用 rootviewcontroller 展示导航控制器,我无法获得透明的结果。
UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
ChooseAddressVc *sec=[story instantiateViewControllerWithIdentifier:@"ChooseAddressVc"];
sec.myDelegate = self;
sec.modalPresentationStyle = UIModalPresentationOverCurrentContext;
sec.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:sec animated:YES completion:^
];
从视图控制器 B 推送到 C
UIStoryboard*Story=[UIStoryboard storyboardWithName:@"Main2" bundle:nil];
AddNewAddressVc*choose=[Story instantiateViewControllerWithIdentifier:@"AddNewAddressVc"];
[self.navigationController pushViewController:choose animated:YES];
注意:当我呈现当前上下文时,我需要从 B 控制器推送到 C 控制器。 为了更好地理解:我们不能将导航控制器分配为根视图控制器当我们需要获得透明度效果时
【问题讨论】:
您遇到了什么错误/问题? @JacobBoyd 当我在当前上下文中显示视图控制器 B 时,我无法从视图控制器 b 推送到 c 【参考方案1】:在您的情况下,B 视图控制器中的 self.navigationController
为零。您需要使用 B 视图控制器创建 UINavigationController
为 rootViewController
。现在从 A 创建 UINavigationController
,而不是呈现 B 视图控制器,之后您可以在 B 视图控制器中使用 self.navigationController
。
您的代码已编辑:
UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
ChooseAddressVc *sec=[story instantiateViewControllerWithIdentifier:@"ChooseAddressVc"];
sec.myDelegate = self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:sec];
navController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:navController animated:YES completion:^
];
【讨论】:
这就是我在评论中提到的,我知道如何在演示时使用 rootviewcontroller 创建导航控制器,但如果我这样做了,我会得到黑屏,并且我无法通过透明度达到预期的效果。请再次阅读我的问题为了更好地理解。 我会试试这个并尽快通知你以上是关于从当前上下文推送导航的主要内容,如果未能解决你的问题,请参考以下文章
一个轻量级、灵活的jQuery画布外导航插件,允许您创建完全可访问的侧边栏或具有键盘交互和ARIA属性的上下滑动(或推送)面板。