You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用初始化UINavigationController出现Pushing a navigation controller is not supported报错

错误原因

你遇到的报错和UINavigationController的初始化方式无关,核心问题是控制器跳转逻辑和API使用不符合iOS规范:

  • showViewController:sender:的行为由系统根据当前控制器的上下文自动判断:如果当前控制器处于导航栈内,该方法会执行push操作,而iOS明确禁止将UINavigationController作为子控制器push到另一个导航栈中,这是报错的直接原因。
  • 你的代码存在逻辑冗余:你创建了包着登录页的导航控制器loginNVC,但跳转时传入的是普通控制器loginVC,且模态跳转的样式设置对象也错用了loginVC而非你要弹出的loginNVC。

修复方案

方案1:保留你设计的「登录/注册页自带独立导航栏」逻辑

直接模态弹出你创建的loginNVC即可,不要使用showViewController避免系统自动判断跳转行为:

loginViewController *loginVC = [[loginViewController alloc] init];
UINavigationController *loginNVC = [[UINavigationController alloc] initWithRootViewController:loginVC];
// 模态样式需设置到你要弹出的导航控制器上
loginNVC.modalPresentationStyle = UIModalPresentationFullScreen;
loginNVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
// 使用present接口明确执行模态弹出
[self presentViewController:loginNVC animated:YES completion:nil];

方案2:不需要登录流程独立导航栏

直接删除loginNVC的初始化代码,跳转登录页即可:
如果想要用push跳转(需要先把信息视图套在导航控制器中):

  1. 先修改AppDelegate的根视图逻辑:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ViewController *rootVC = [[ViewController alloc] init];
    // 给信息视图套一层导航控制器,才能支持push操作
    UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:rootVC];
    self.window.rootViewController = rootNav;
    [self.window makeKeyAndVisible];
    return YES;
}
  1. 跳转代码修改为:
loginViewController *loginVC = [[loginViewController alloc] init];
[self.navigationController pushViewController:loginVC animated:YES];

如果想要用模态弹出,不需要修改AppDelegate:

loginViewController *loginVC = [[loginViewController alloc] init];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;
loginVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:loginVC animated:YES completion:nil];

内容的提问来源于stack exchange,提问作者UnAvailable404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:15:03