Swift如何编程将自定义控制器设为根控制器?解决NIB无法加载报错
问题原因
你初始化HomeViewController时传入了nibName: "HomeViewController"参数,但是项目中没有创建同名的xib(NIB)文件,系统在Bundle中找不到对应NIB文件就会触发崩溃。你明确设置了不使用StoryBoard,也没有配套xib文件的场景下,不应该使用带nibName参数的构造方法。
解决方案
直接修改SceneDelegate中的ViewController初始化代码即可,把带nibName的构造替换为无参数的默认构造:
// 把原来这行 window?.rootViewController = HomeViewController(nibName: "HomeViewController", bundle: nil) // 替换为 window?.rootViewController = HomeViewController()
额外检查项
- 确认已经删除了项目配置里主界面相关的Storyboard配置:打开项目TARGETS -> Info -> Custom iOS Target Properties,删除
Main storyboard file base name条目;同时在Info选项卡下的Scene Configuration->Application Session Role->Item 0中,确认Storyboard name字段为空 - 如果你的
HomeViewController是纯代码写UI,确保在loadView或者viewDidLoad中正确配置了所有UI控件的约束/frame,避免出现空白页面
内容的提问来源于stack exchange,提问作者Rodion Raskolnikov
相关产品推荐
相关产品推荐

