Xcode问题求助:Storyboard显示返回按钮,Simulator中导航栏及按钮均缺失
碰到过好多次这种情况,给你列几个最常见的排查方向,都是实际开发里踩过的坑:
当前ViewController没在导航栈里
这是头号元凶!如果你的VC没被UINavigationController包裹,或者是用present(_:animated:completion:)弹出的(而不是导航控制器的pushViewController(_:animated:)),导航栏根本不会加载。去Storyboard检查:目标VC是不是导航控制器的根VC,或者是从导航栈内的VC通过segue跳转过来的?导航栏被手动隐藏了
先查代码:看看viewDidLoad、viewWillAppear这类方法里有没有写navigationController?.isNavigationBarHidden = true;再查Storyboard:选中目标VC,打开Attributes Inspector,看看“Navigation Bar”区域是不是勾了“Hide Navigation Bar”选项。VC缺少Navigation Item
每个要显示导航栏的VC都得有对应的Navigation Item。去Storyboard里看VC的子视图列表,要是没有这个元素,从Object Library拖一个到VC顶部就行——返回按钮的显示也依赖这个Item。全局导航栏样式冲突
如果项目里用UINavigationBarAppearance做了全局配置,比如把背景设为透明、隐藏了阴影同时没设置背景色,可能导致导航栏看起来“消失”了。去AppDelegate或SceneDelegate里检查全局导航栏的设置代码。模拟器缓存/编译问题
有时候Storyboard的改动没同步到模拟器。试试清项目缓存(快捷键Command + Shift + K),删掉模拟器上的APP,重新Build运行,说不定就正常了。自定义返回按钮配置错误
要是你手动把navigationItem.backBarButtonItem设为nil,或者自定义返回按钮时没正确配置事件/外观,可能导致导航栏布局异常。可以先注释掉自定义返回按钮的代码,看看导航栏能不能正常显示,再逐步排查。
内容的提问来源于stack exchange,提问作者k.b

