尝试在真正的 iOS 设备上运行我的应用程序时遇到一个奇怪的错误:'Could not find a storyboard named 'Main' in bundle NSBundle'
。
我的目录中有该文件,它在模拟器中运行良好。但是,在 Copy Bundle Resources
部分中,文件 Main.storyboard
是红色的。
我尝试删除它并再次添加它,重新启动 Xcode,清理构建等,但无济于事。这是我在 Xcode 中收到的警告:
/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0
https://i.stack.imgur.com/M90iH.png
https://i.stack.imgur.com/65P0S.png
对于 2021...
您还必须编辑 UIApplicationSceneManifest
。请参阅下面的最新答案。
对于在 Xcode 11 上遇到此问题的任何人,如果您在进行无情节提要项目设置时遇到此问题,请按照以下方法解决
(添加一些 ricardopereira 遗漏的部分)
1)首先,删除Main.storyboard文件
2) 接下来,转到 PROJECT_NAME -> GENERAL
在主界面下拉菜单中,删除文本Main
https://i.stack.imgur.com/PJwOw.png
3) 现在转到 info.plist 并删除 Storyboard Name
https://i.stack.imgur.com/Xe2LY.png
4) 最后,修改 SceneDelegate.swift 文件中的 scene(_:willConnectTo:options) 代码(是的!它不再在 App Delegate 中了。)
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
您也可以参考此视频:https://www.youtube.com/watch?v=Htn4h51BQsk
guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }
您可以检查情节提要的目标成员资格。可能问题出在哪里:
它应该看起来像这样:
https://i.stack.imgur.com/3i4TU.png
为 iOS 13.0 及更高版本创建的应用程序的更新。 (Xcode 11)
如果您收到错误“即使在更改 info.plist 中的“主故事板文件基础名称”和 Target 中的部署下的“主界面”后,也无法在捆绑包中找到名为“主”的故事板。
然后您必须更改 info.plist 文件中的另一个条目。
打开 info.plist 文件。展开“应用场景清单”。展开“场景配置”。展开“应用程序会话角色”下的项目 0,然后在此处更改情节提要名称。
https://i.stack.imgur.com/vNe7D.png
您的应用程序将开始工作。
在 iOS 13 和 Xcode 11 中使用 UIScene
的项目中,您需要从 .plist
中删除 UISceneStoryboardFile
键。
Xcode 11:
https://i.stack.imgur.com/WtAmm.png
直接从文件更改:
https://i.stack.imgur.com/AHmQB.png
我从手机中删除了该应用程序,执行 Product--> Clean,然后再次加载。这就是我所需要的。
我得到了这个错误,但是,我打算完全删除故事板。
从我的 plist 中删除 'Main Storyboard file base name' 键可以解决该错误。
在捆绑包中找不到名为“Main”的情节提要
我能想到的原因:
据我的 iOS 知识得出的结论,这只是因为 XCode 无法在我的项目目录中找到对 Main.storyboard 文件的引用以将其复制到应用程序中。
解析度:
选中 Main.storyboard 文件并尝试删除,从弹出的对话框中如下: 点击“Remove Reference”按钮。然后,从我可以在项目目录中找到 Main.storyboard 文件的实际位置拖放到 XCode,然后再次从弹出的对话框中选择,“创建文件夹引用”(因为那是我打算做的一件事是因为我更改了项目的文件和文件夹结构)。但大多数时候选择“创建组”也可能有效。并点击“完成”按钮。我的 Storyboard 文件已经在 Base.lproj 目录中,如屏幕截图所示,如下所示: 注意:在此步骤中要提醒的一件重要事情是,不要忘记在“添加到目标”复选框上打勾你的应用程序。清理产品,重新构建,如果成功,大多数时候尝试运行它会成功。
希望这可能对其他人有帮助!我在 XCode 7.3.1 和 iOS Sim 9.3 和 iPhone 6S 上试过这个!
按照步骤:
1)首先点击你的故事板
2)然后单击文件检查器
3)然后选择“目标会员”
https://i.stack.imgur.com/3qxHW.png
模拟器不区分大小写,但设备是。如果您的故事板被称为 MainStoryboard,而不是 MainStoryBoard,这将导致您的问题。并且 aslo * 不要使用扩展只写故事板名称
main.storyboard -> 只有 main 是故事板名称
斯威夫特 5.1 和 xCode 11.2
就我而言,我忘记在 Info.plist
中更改 Storyboard Name
https://i.stack.imgur.com/Z48UN.png
Info.plist
源代码
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>AccountViewController</string>
</dict>
</array>
</dict>
</dict>
另外,尝试删除情节提要名称
https://i.stack.imgur.com/PGLlb.png
打开你的故事板文件然后点击文件检查器然后选择“Target Membership”并检查你的项目对ViewController文件做同样的事情!!!如果你在你的故事板中使用ViewController.swift或ViewController.m,重要的部分!!!
当您在删除文件后从垃圾箱中恢复 main.storyboard 文件时,会出现此错误。我昨天也遇到了同样的问题。
您必须在 main.storyboard 的文件检查器中将 main.storyboard 的位置路径设置为相对于组。之后在相同的属性中,您必须确保您的应用目标上的复选标记(如您在附图中所见)。
https://i.stack.imgur.com/RTCQk.png
升级到 Xcode 10.1 后对我有用的两种不同解决方案:
在文件-> 工作区(或项目)设置中。切换到旧版构建系统。
在您的目标构建阶段中,从 Copy Bundle Resources(如果列出)中删除 Base.lproj 文件夹,并确保列出并单独复制每个情节提要。
应用上述任一修复后,请确保您从产品菜单中清理过构建文件夹一次,否则修复可能无法正常工作。
删除 plist 中的行也导致我的应用程序出现黑屏。我通过启用情节提要的目标成员资格来修复它
正如 Kalpit Gajera 所说,“打开项目的 info.plist 并删除屏幕截图中显示的选定行”。您只需从 Info.plist 中删除“主故事板文件基本名称”。删除它,清理并运行后,程序将不再失败,但会显示黑屏。再次打开 Info.plist 并手动重新添加该行。问题已解决。
如果您仍然有黑屏,请尝试在您的场景委托中添加以下代码
将连接到
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
let navController = UINavigationController()
let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
navController.addChild(initialController)
window?.rootViewController = navController
window?.makeKeyAndVisible()
选择 main.storyboard,将视图更改为 iOS 6.1 及更早版本,然后 xcode 会告诉你需要做什么。
https://i.stack.imgur.com/PfLjW.png
我的解决方案是:
当我在两个视图之间添加序列连接并且在 Projekt 配置中部署目标小于 8.0 时,我收到此错误。
好的,很容易理解,当你为 IOS 6.0 开发时(例如)你不能使用 Seque,因为 Seque 需要 IOS 8.0 或更高版本...... ;-)
所以,我将部署目标设置为 8.0 并且错误消失了!!!!另外,我取消了所有的 Segue 连接并使用 IBAction 处理它,老派 ;-)
我将 Main.Storyboard 文件移动到导致问题的“蓝色”子文件夹,我必须按照这些说明添加子文件夹 Xcode 6.3 New File Issue
然后将 Main.Storyboard 文件移动到黄色子文件夹对我有用
通过从 Main.storyboard.xml file
中删除 .xml
后缀解决了我的问题。
显然,后缀从我导入项目的版本发生了变化。
因此,重命名文件(删除 .xml
后缀)并重新启动,然后 Project-> clean....
解决了问题。
https://i.stack.imgur.com/k9lzk.png
https://i.stack.imgur.com/v5yrx.png
注意:如果缺少某些 ViewControllers “在捆绑包中找不到名为 'ReceiverViewController' 的情节提要”,您可以在情节提要 ID 中添加 ViewController 的名称并使用下面的代码进行导航
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "ReceiverViewController") as! ReceiverViewController
self.navigationController?.pushViewController(vc, animated: true)
好的,这是一个过程。尝试了很多不同的东西。在 OS 10.11 上运行 xcode 6.4。有找不到“主要”问题。我最终所做的就是将 main.storyboard 从 Finder 移到我的桌面上。清理并构建并退出 xcode。重新启动 xcode 现在它有一个红色的 main.storyboard。我运行它实际上做同样的事情。然后我右键单击项目文件夹并选择选项将文件添加到... 浏览到它所在的位置并打开它。那么当它在右边时应该是身份检查员。单击位置下的小文件夹。再次浏览到该文件夹并选择选择。然后我跑了,它奏效了。阿门!!!
选择要首先显示在情节提要左侧列表中的视图控制器,然后在属性检查器中确保其标题为“Main”并选中“Is Initial View Controller”复选框。
就我而言,这是由于 Pod 库已过时
删除 /Pods 文件夹并执行 pod install
为我修复了它