【问题标题】:Xib not found after localization本地化后找不到 Xib
【发布时间】:2013-04-09 06:57:24
【问题描述】:

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

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

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

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

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

[[SPConfigViewController alloc] initWithNibName:@"SPConfigViewController" bundle:nil];

编辑:

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

【问题讨论】:

  • 调用initWithNibName时显示代码。

标签: ios localization xib


【解决方案1】:

你可以这样做:

[[YourViewController alloc] initWithNibName:@"YouViewController.xib" bundle:nil]

不要为视图控制器的笔尖名称使用扩展名,尝试如下:

[[YourViewController alloc] initWithNibName:@"YouViewController" bundle:nil]

【讨论】:

  • 这就是我初始化它的方式:[[SPConfigViewController alloc] initWithNibName:@"SPConfigViewController" bundle:nil];
【解决方案2】:

我有同样的经历,真是一次心灵之旅……

流程:

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

  1. 文件导航器中单击一个 .xib 资源,它会加载 Interface Builder
  2. 使用文件检查器,点击Localize按钮
  3. 一个模态显示询问您要使用哪种语言(我无法使用“Base”,所以我选择了“English”)
  4. 现在在 File Inspector 的 Localized 部分中,English 旁边有一个复选标记,Base 旁边没有,所以我检查了 Base
  5. 然后我得到了一个选择器,用于选择我希望如何本地化英语:Interface Builder Cocoa Touch XIBLocalizable Strings

好的,我很乐观地认为这会奏效,所以运行...
...然后崩溃

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle (已加载)”,名称为“__MY”笔尖字符串在这里___''

清理、构建、运行 -> 崩溃
选项键 + 清理、构建、运行 -> 崩溃
选项键 + 清理、删除应用程序、构建、运行 -> 崩溃
选项键 + 清理、重置模拟器、诅咒、构建、运行 -> 崩溃

退出 Xcode,重新启动 Xcode,构建,运行 -> 工作!见鬼。

我已打开错误报告 against the issues,如果您遇到此问题,请复制它,以便开发人员工具团队知道这是一个反复出现的问题。

【讨论】:

  • Xcode 4.6.3 存在同样的问题。 Option Key + Clean, Reset Simulator, Curse, Quit Xcode, Relaunch Xcode, Build, Run -> 为我工作:D
  • 从模拟器中删除应用程序、退出 Xcode 并手动删除派生数据文件夹通常会为我解决此问题。
  • 我在这方面遇到了很多麻烦。我的模拟器没有崩溃,但没有显示正确的 .xib(它显然没有加载)。我确实清除了,删除了应用程序,重新启动了 Xcode,并且完美运行!
  • 我不敢相信 Apple 发布的 XCode 有这么多明显的错误
  • 退出 Xcode,重新启动 Xcode,构建,运行 -> 也为我工作!
【解决方案3】:

这似乎是由于本地化 xib 文件将其移动到项目根目录内的新目录 (base.lproj) 造成的,之后 xcode 无法再找到 xib 文件。

我通过转到项目文件、选择我的目标、转到构建阶段选项卡来解决此问题。然后,如果您展开“复制捆绑资源”文件夹,您应该注意到在 NSException 中被投诉的文件是红色的。我删除了这个文件并重新读取了在“base.lproj”子文件夹中找到的本地化版本,这似乎解决了这个问题。

据我所知,这需要对每个本地化的 xib 执行此操作,这会带来大量不必要的麻烦(感谢 xcode...),但是嘿,应用程序不再崩溃了。

【讨论】:

  • 我已经尝试了一遍又一遍,没有修复。重启 Xcode 也没有修复。使用 git,我重置了所有更改。但我真的很想使用基础国际化。你在这方面学到了什么吗?
【解决方案4】:

确认您已将文件本地化为所有语言。我没有检查英语,它会以这种方式失败。在我检查英语然后重新添加 cob 之前,我无法让它正确显示在“复制捆绑资源”中。你可以说它没问题,因为它不会是红色的,它会说“... in/MyProject/(localization).lproj”,其中 MyProject 当然是你的项目的名称。

【讨论】:

    【解决方案5】:

    在我的例子中,我将其中一个本地化文件夹从 Base.lproj 重命名为 base.lproj。在将其重命名并将所有出现的 base 替换为 .pbxproj 中的 Base 后,它就可以工作了!

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 2011-09-05
      • 2011-09-19
      • 2011-04-11
      • 2012-02-05
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      相关资源
      最近更新 更多