我在尝试在真实的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
答案 0 :(得分:69)
答案 1 :(得分:51)
答案 2 :(得分:14)
我从手机中删除了应用,做了产品 - >清理,然后再次加载。这就是我所需要的一切。
答案 3 :(得分:12)
对于在Xcode 11上遇到此问题的任何人,如果在减少情节提要的项目设置
(添加 ricardopereira 缺少的部分)
1)首先,删除Main.storyboard文件
2)接下来,转到 PROJECT_NAME -> GENERAL
在主界面下拉菜单中,删除文本 Main
3)现在转到info.plist并删除故事板名称
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
答案 4 :(得分:7)
我收到了这个错误,但是,我打算完全删除故事板。
从我的plist中删除'Main Storyboard文件基本名称'键可以解决错误。
答案 5 :(得分:6)
模拟器不区分大小写,但设备是。如果您的故事板被称为MainStoryboard,而不是MainStoryBoard,这将导致您的问题。 和aslo *不要使用扩展名只写故事板名称
main.storyboard - >只有主要是故事板名称
答案 6 :(得分:6)
我能想到的原因:
就我的iOS知识总结而言,这只是因为XCode无法在项目目录中找到对Main.storyboard文件的引用而将其复制到App中。
解决:强>
点击"删除参考"按钮。
然后,从我可以在项目目录中找到Main.storyboard文件的实际位置,拖动并删除到XCode,再次从弹出的对话框中,如下所示:
我选择了"创建文件夹引用" (因为那是我打算做的一件事,因为我已经改变了我的项目的文件和文件夹结构)。但大多数时候选择"创建群组"也可能有用。然后点击"完成"按钮。我的故事板文件已经位于Base.lproj
目录中的屏幕截图中,如下所示:
注意:在此步骤中提醒一件重要的事情是,不要忘记在复选框上打勾"添加到目标"到你的应用程序。
清洁产品,重新构建,如果成功,大部分时间尝试运行都会成功。
希望这对其他人有帮助!我在XCode 7.3.1以及iOS Sim 9.3和iPhone 6S上试过这个!
答案 7 :(得分:5)
答案 8 :(得分:4)
答案 9 :(得分:3)
在删除文件后从垃圾桶中恢复main.storyboard文件时,会出现此错误。昨天我也遇到了同样的问题。
您必须在main.storyboard的文件检查器中将main.storyboard的位置路径设置为相对于组。之后,在同一属性中,您必须确保应用目标上的复选标记(如图所示)。
答案 10 :(得分:2)
答案 11 :(得分:2)
针对iOS 13.0及更高版本创建的应用程序的更新。
如果您收到错误消息“即使在info.plist中的“ Main Storyboard File base name”和“ Target”中的“ Main Interface”下更改后,也无法在捆绑包中找到名为“ Main”的Storyboard。
然后,您必须在info.plist文件中更改另一个条目。
您的应用程序将开始运行。
答案 12 :(得分:1)
答案 13 :(得分:1)
在升级到Xcode 10.1之后,两种对我有用的解决方案:
在文件->工作区(或项目)设置中。切换到旧版构建系统。
在目标构建阶段中,从 Copy Bundle Resources (如果列出)中删除 Base.lproj 文件夹,并确保列出每个故事板,并分别复制。
应用上述任一修补程序后,请确保您一次从“产品”菜单中清理构建文件夹,否则这些修补程序可能无法正常工作。
答案 14 :(得分:1)
正如Kalpit Gajera所说,"打开项目的info.plist并删除屏幕截图中显示的选定行"。您只需删除'主要故事板文件基本名称'来自Info.plist。删除它,清理并运行后,程序将不再失败,但会显示黑屏。再次打开Info.plist并手动添加该行。问题已解决。
答案 15 :(得分:1)
删除plist中的行也导致我的应用程序出现黑屏。我通过启用故事板的目标成员资格来修复它
答案 16 :(得分:0)
通过从.xml
删除后缀Main.storyboard.xml file
解决了我的问题。
显然,后缀与导入项目的版本不同。
因此,重命名文件(删除后缀.xml
并重新启动,然后Project-> clean....
解决了该问题。
答案 17 :(得分:0)
我将Main.Storyboard文件移动到导致问题的“蓝色”子文件夹,我不得不按照这些说明添加子文件夹 Xcode 6.3 New File Issue
然后将Main.Storyboard文件移动到黄色子文件夹确实对我有用
答案 18 :(得分:0)
就我而言,我忘记更改 Storyboard Name
Info.plist
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>
答案 19 :(得分:0)
我的解决方案是:
当我在两个视图之间添加Seque Connection并且在Projekt配置中,部署目标小于8.0时,我收到此错误。
好的,当你为IOS 6.0开发时很容易理解(例如)你不能使用Seque,因为Seque需要IOS 8.0或更高版本......; - )
所以,我将部署目标设置为8.0,错误消失了! 另一方面,我取消所有的Segue Connections并用IBAction处理它,旧学校; - )
答案 20 :(得分:0)
如果仍然有黑屏,请尝试在场景委托中添加以下代码
willConnectTo
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()
答案 21 :(得分:0)
如果您的故事板是添加到项目中的(您将从xcode实用程序区域的“项目文件检查器”部分中确定)
您只需要从“复制捆绑资源”(在Main.Storyboard
中)中删除Build Phase
,然后再次将其添加到“复制捆绑资源”中。这对我有用。
答案 22 :(得分:0)
选择main.storyboard,将视图更改为iOS 6.1及更早版本,然后xcode将告诉您需要做什么。
答案 23 :(得分:-1)
好的,这是一个过程。尝试这么多不同的东西。在OS 10.11上运行xcode 6.4。有找不到'主'问题。我最终做的是将我的桌面上的main.storyboard从Finder.Did移开干净,构建并退出xcode。重新启动xcode现在它有一个红色的main.storyboard。我运行它几乎做同样的事情。然后我右键单击项目文件夹并选择添加文件选项...浏览到它的位置并打开它。然后当它在右边时应该是身份检查员。单击位置下的小文件夹。再次浏览到该文件夹并选择选择。然后我跑了,它运作了。阿门!!!
答案 24 :(得分:-1)
选择要首先显示在情节提要板左侧列表中的视图控制器,然后在属性检查器中确保其标题为“ Main”,并选中“ Is Initial View Controller”复选框。
答案 25 :(得分:-2)
就我而言,这是由于 Pod 库已过时
删除 /Pods 文件夹并执行 pod install
为我修复了它