我在尝试从一个 UINavigationController 推送到另一个时遇到了问题。
我到达了我的 CameraViewController - 通过在不同的 View Controller 中选择一个按钮来嵌入 UINavigationController,如下所示:
- (void)goToCamera {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName"Main" bundle:nil];
CameraViewController *camera = [storyboard instantiateViewControllerWithIdentifier"CameraView"];
[self presentViewController:camera animated:YES completion:^{
}];
}
从那里我尝试通过推送来访问我的 PublishViewController - 它没有嵌入 UINavigationController,因为如果来自另一个 UINavigationController,我认为您不需要它。
我尝试这样做:
- (void)goToPublish {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName"Main" bundle:nil];
PublishViewController *publishView = [storyboard instantiateViewControllerWithIdentifier"ublishView"];
[self.navigationController pushViewController:publishView animated:YES];
}
任何想法为什么这不起作用? Controller 从不插入。从我最初使用相机时开始嵌入是否仍然有效,或者我是否还需要初始化 UINavigationController?
这是我的 Storyboard:
Best Answer-推荐答案 strong>
当你呈现一个名为 VC1 的 viewController 时,VC1 的 navigationController 必须为 nil,除非你呈现一个 navigationController。
你应该知道,当有人(UINavigationController) push 时,vc.navigationController 不是 nil,或者它是 UINavigationController 的 rootViewController。(实际上,nav 的 rootViewController 也被推送到了 nav 的堆栈中)。
您应该创建一个新的导航 Controller 。
- (void)goToCamera {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName"Main" bundle:nil];
CameraViewController *camera = [storyboard instantiateViewControllerWithIdentifier"CameraView"];
UINav *nav = UINav alloc]initWithRootVC:camera];
[self presentViewController:nav animated:YES completion:^{
}];
}
关于ios - 推送问题 UINavigationController,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/27895074/
|