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

Navigation Controller响应异常求助:栈不显示+Push Segue报错

解决你的UINavigationController相关问题

看起来你遇到的两个问题其实是同一个根源导致的:你的ViewController并没有被正确嵌入到UINavigationController中。让我们一步步解决:

1. 确保ViewController被UINavigationController管理

这是解决所有问题的核心,按照以下步骤检查Storyboard配置:

  • 打开你的Storyboard,选中ViewController
  • 点击顶部菜单栏的 Editor -> Embed In -> Navigation Controller,此时你的ViewController会自动成为这个NavigationController的根视图控制器
  • 如果这个NavigationController是App的入口页面,记得选中它,在右侧属性面板里勾选 Is Initial View Controller

完成这一步后,你的ViewController就正式加入到导航栈中了,导航栏的完整栈也会正常显示。

2. 修复Push Segue的异常问题

现在你的ViewController已经在导航栈里了,之前的segue异常会自动解决,但需要确保segue的配置正确:

  • 如果你是在Storyboard里手动添加的segue,确认segue的类型是 Push(而不是Modal或者其他类型)
  • 如果你更倾向用代码控制跳转(有时候更灵活),可以删除Storyboard里的segue,然后在nextButtonPressed方法里添加如下代码:
@IBAction func nextButtonPressed(_ sender: UIButton) {
    // 替换成你详情页的类名和Storyboard ID
    guard let detailVC = storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as? DetailViewController else {
        return
    }
    navigationController?.pushViewController(detailVC, animated: true)
}

注意:要先给你的详情视图控制器在Storyboard里设置好对应的Storyboard ID

额外小提示

你代码里在viewDidLoad中设置了self.title = "test",这会直接覆盖titleNavigationBar这个IBOutlet的设置。如果想使用你绑定的titleNavigationBar来设置标题,可以改成:

titleNavigationBar.title = "test"

完成以上步骤后,导航栈会正常显示所有控制器,push跳转也不会再抛出异常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:03:49