我在我的项目中为意大利语添加了一个新的本地化,之后我本地化了一个xib文件来开始项目的翻译。问题是,现在当我在模拟器中运行我的项目时,没有找到任何xib。
(GAIUncaughtExceptionHandler.m:41):未捕获的异常:无法在bundle中加载NIB:'NSBundle ...
我正在使用initWithNibName实例化此xib的文件所有者。
我已尝试过xib的纯本地化和基本本地化,但它们都没有工作。
我正在这样初始化所有者:
[[SPConfigViewController alloc] initWithNibName:@“SPConfigViewController”bundle:nil];
编辑:
在我创建了xib的本地化版本之后,我决定关闭XCode并再次打开它,它有效...
答案 0 :(得分:24)
我有同样的经历和精神之旅......
过程:
(假设在项目信息中选择了“使用基础国际化”的项目)
Localize
按钮好吧,我乐观地认为这样可行,所以运行......
......然后崩溃
***因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:'NSBundle< /var/mobile/Applications/_____/_____.app> (加载)'带名字'__MY NIB STRING HERE ___''
清洁,构建,运行 - >崩溃
选项键+清洁,构建,运行 - >崩溃
选项键+清洁,删除应用程序,构建,运行 - >崩溃
Option Key + Clean,Reset Simulator,Curse,Build,Run - >碰撞
退出Xcode,重新启动Xcode,构建,运行 - >作品! WTF。
我已经打开了一个错误报告against the issues,如果您遇到这个问题需要复制它,以便开发人员工具团队知道它的重复出现问题,我们将不胜感激。
答案 1 :(得分:1)
这似乎是由于本地化xib文件将其移动到项目根目录中的新目录(base.lproj),然后xcode无法再找到xib文件。
我通过转到项目文件,选择目标,转到构建阶段选项卡解决了这个问题。然后,如果展开“复制捆绑资源”文件夹,您应该注意到在NSException中被抱怨的文件显示为红色。我删除了这个文件并读了“base.lproj”子文件夹中找到的本地化版本,这似乎解决了这个问题。
据我所知,这需要针对每个本地化的xib进行,这是一个不必要的问题(感谢xcode ...)但是嘿,应用程序不再崩溃。
答案 2 :(得分:0)
你可以这样做:
[[YourViewController alloc] initWithNibName:@"YouViewController.xib" bundle:nil]
请勿对视图控制器的笔尖名称使用扩展名,请尝试以下方式:
[[YourViewController alloc] initWithNibName:@"YouViewController" bundle:nil]
答案 3 :(得分:0)
确认您已为所有语言本地化了该文件。我没有选中英语,这样会失败。我无法让它在“复制捆绑资源”中正确显示,直到我检查了英文,然后重新添加了玉米棒。你可以说它没问题,因为它不会是红色的,它会说'... in / MyProject /(localization).lproj',MyProject当然是你项目的名称。
答案 4 :(得分:0)
就我而言,我将其中一个本地化文件夹从Base.lproj重命名为base.lproj。将其重命名并替换为.pbxproj中所有基于base的匹配项后,它可以正常工作!