在 Xcode 5 中禁用基本本地化后找不到 MainMenu.xib
Posted
技术标签:
【中文标题】在 Xcode 5 中禁用基本本地化后找不到 MainMenu.xib【英文标题】:MainMenu.xib not found after base localization was disabled in Xcode 5 【发布时间】:2014-02-04 09:11:08 【问题描述】:我正在开发一个应该在 10.7 上受支持的 Mac OS 应用程序。该项目是在 Xcode 5 下创建的,在 Mavericks 上运行,最初启用了基本本地化。
我现在已经删除了基本本地化,以便可以支持 10.7,但由于 Xcode 生成以下错误,因此无法再让应用程序在 10.7 或 10.9 上运行:
Unable to load nib file: MainMenu.xib, exiting
所以我通过File - New File - MainMenu
添加了一个新的 MainMenu.xib 文件。我连接了 AppDelegate 对象并设置了代表。
回到项目文件,我确定了以下几点:
MainMenu.xib 是构建目标的Copy Bundle Resources
构建阶段的一部分。
确保在目标General - Main Interface
设置中选择了MainMenu.xib
在File Inspector
中检查MainMenu.xib
并看到它已本地化为English
,并且在其旁边选中了一个复选标记。
我想不出还应该设置什么。我什至创建了一个新的空项目进行测试。有了这个,我除了删除基本本地化之外没有做任何更改,然后尝试重新添加新的 MainMenu.xib 并按照上述步骤进行操作,但无济于事。在 Xcode 中启动时,该构建也会失败并出现相同的错误。
我什至尝试过使用不同名称的不同 XIB 文件(但仍将一个设置为 MainMenu),但所做的只是更改错误消息以反映我在设置中指定的新 XIB 名称。
虽然我确信基本本地化很棒,但我希望支持 10.7 用户,所以我不认为保持基本本地化对我来说是一种选择。
任何帮助(即使它指出了显而易见的)将不胜感激。
【问题讨论】:
在您的 Apps Info.plist 文件(或 Xcode 中的 Info 设置)中,Localization native development region
的值是多少?这应该是您的母语。另外,您现在的 XIB 的文件布局是什么?您的 MainMenu.xib 是在基本 Resources
文件夹中还是在 .lproj
文件夹中?
@gaige:Localization Native Development Region
设置为 en
,这对我来说是正确的。我的MainMenu.xib
文件位于en.lproj
文件夹中,我使用的其他几个XIB 文件位于更高的一个目录(Xcode 默认放置所有源文件)。我没有名为Resources
的文件夹。使用 Xcode 中的文件检查器,我检查了我的项目是否正确引用了 MainMenu.xib
文件。仍然不知所措。
【参考方案1】:
我想我终于找到了罪魁祸首。当base
本地化被删除时,需要在目标中创建并选择一个新的MainMenu
XIB 文件。在Targets - Deployment Info - Main Interface
下,下拉菜单列出了项目中所有可用的XIB 文件,您可以指定为Main Interface
。自然,我选择了我新创建的MainMenu.xib
文件,这就是问题开始的地方。
在比较 Xcode 对 Project Settings
文件所做的更改后,我注意到在工作副本中,Main Interface
键被设置为 MainMenu
,而在非工作副本中,键被设置到MainMenu.xib
,这正是下拉菜单中的内容。
从Targets - Deployment Info - Main Interface
组合框中手动删除.xib
扩展似乎又可以正常工作了。请注意,首先添加.xib
后缀的是组合框。
这里可能还有更多的作用,但这个简单的改变导致程序现在可以正常启动。
【讨论】:
以上是关于在 Xcode 5 中禁用基本本地化后找不到 MainMenu.xib的主要内容,如果未能解决你的问题,请参考以下文章
构建错误:升级到 Xcode 10 后找不到 FBSDKShareKit.h 文件
ld:通过 cocoapods 从 4.x.x 升级到 5.x.x firebase 后找不到框架 FirebaseAnalytics