Xcode14.1 macOS项目删除Main.storyboard报错,如何取消使用它?
Xcode 14.1 macOS项目主界面设置位置及移除Main.storyboard报错解决
一、主界面(Main Interface)设置位置
在Xcode 14.1的macOS Storyboard项目中,General选项卡不再提供主界面设置,你可以通过以下两种方式找到并修改:
- 方式1:通过项目Info选项卡修改
- 选中左侧导航栏顶部的项目蓝色图标
- 切换到Info选项卡
- 展开Application Scene Manifest → Scene Configuration → Application Session Role → 对应场景(通常是Item 0),找到
Storyboard Name字段,这里就是原主界面的设置项
- 方式2:直接编辑Info.plist文件
打开项目的Info.plist,找到NSMainStoryboardFile键,修改或删除它即可调整主界面配置
二、删除Main.storyboard后报错的彻底解决步骤
报错Thread 1: "Could not find a storyboard named 'Main' in bundle NSBundle"是因为项目中仍有引用Main.storyboard的配置或代码,按以下步骤彻底移除:
- 清除Info.plist中的主界面引用
- 打开
Info.plist,删除NSMainStoryboardFile键值对 - 如果是基于Scene的项目,继续展开
Application Scene Manifest→Scene Configuration→ 对应场景,删除Storyboard Name键值对
- 打开
- 修改代码,手动初始化窗口和视图
- 若使用AppDelegate(非Scene架构),修改
applicationDidFinishLaunching方法:func applicationDidFinishLaunching(_ aNotification: Notification) { // 创建主窗口 let mainWindow = NSWindow( contentRect: NSRect(x: 0, y: 0, width: 800, height: 600), styleMask: [.titled, .closable, .miniaturizable, .resizable], backing: .buffered, defer: false ) mainWindow.center() mainWindow.title = "自定义应用标题" // 设置根视图控制器 mainWindow.contentViewController = YourRootViewController() mainWindow.makeKeyAndOrderFront(nil) // 保存窗口引用到AppDelegate self.window = mainWindow } - 若使用SceneDelegate架构,修改
scene(_:willConnectTo:options:)方法:func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = scene as? NSWindowScene else { return } // 创建窗口 let mainWindow = NSWindow(windowScene: windowScene) mainWindow.contentRect = NSRect(x: 0, y: 0, width: 800, height: 600) mainWindow.styleMask = [.titled, .closable, .miniaturizable, .resizable] mainWindow.center() mainWindow.title = "自定义应用标题" // 设置根视图控制器 mainWindow.contentViewController = YourRootViewController() mainWindow.makeKeyAndOrderFront(nil) // 保存窗口引用 self.window = mainWindow }
注意:将代码中的
YourRootViewController替换为你实际的根视图控制器类名 - 若使用AppDelegate(非Scene架构),修改
- 检查并清理其他代码引用
搜索项目中所有使用UIStoryboard(name: "Main", bundle: nil)的代码,全部替换为代码初始化控制器的逻辑 - 清理项目缓存并重新编译
使用快捷键Cmd + Shift + K清理Build文件夹,再重新编译项目即可解决报错
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

