本地化后未找到Xib

时间:2013-04-16 18:22:46

标签: ios localization xib

我在我的项目中为意大利语添加了一个新的本地化,之后我本地化了一个xib文件来开始项目的翻译。问题是,现在当我在模拟器中运行我的项目时,没有找到任何xib。

  

(GAIUncaughtExceptionHandler.m:41):未捕获的异常:无法在bundle中加载NIB:'NSBundle ...

我正在使用initWithNibName实例化此xib的文件所有者。

我已尝试过xib的纯本地化和基本本地化,但它们都没有工作。

我正在这样初始化所有者:

  

[[SPConfigViewController alloc] initWithNibName:@“SPConfigViewController”bundle:nil];

编辑:

在我创建了xib的本地化版本之后,我决定关闭XCode并再次打开它,它有效...

5 个答案:

答案 0 :(得分:24)

我有同样的经历和精神之旅......

过程:

(假设在项目信息中选择了“使用基础国际化”的项目)

  1. 点击文件导航器中的.xib资源,该资源加载Interface Builder
  2. 使用文件检查器,单击Localize按钮
  3. 一个模态提示询问您想使用哪种语言(“Base”对我来说不可用,所以我选择了“英语”)
  4. 现在,在文件检查器的本地化部分,一个复选标记位于英语旁边,没有旁边的基础,所以我检查了基础
  5. 然后我获得了一个选择器,我希望如何将英语本地化: Interface Builder Cocoa Touch XIB 可本地化的字符串
  6. 好吧,我乐观地认为这样可行,所以运行......
    ......然后崩溃

      

    ***因未捕获的异常'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的匹配项后,它可以正常工作!