OGeek|极客世界-中国程序员成长平台

标题: ios - 推送问题 UINavigationController [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 13:45
标题: ios - 推送问题 UINavigationController

我在尝试从一个 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:

Storyboard



Best Answer-推荐答案


当你呈现一个名为 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4