15

我正在使用 xCode 4.6 上的多个故事板和基础本地化。事实上我

我做了:

1)编辑我的项目信息本地化:选中“使用基础国际化”并添加语言:英语,中文

2)创建一个名为“anotherstoryboard.storyboard”的新故事板

3) 使用 Base 国际化本地化我的新故事板(文件检查器/本地化 - 本地化)。

4)在我的应用程序委托中,我动态加载我的本地化故事板,如下所示:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"anotherstoryboard" bundle:nil];

案例 1: => 有效

对于我的新故事板(第 3 步),我选择本地化中文 - Interface Builder Cocoa Touch Storyboard

在此处输入图像描述

它可以工作,但现在我必须维护本地化的故事板,用 IB 编辑它们。我不想要这种行为,我只想使用基本国际化和本地化 .strings 文件。

案例 2: => 崩溃

对于我的新故事板(第 3 步),我选择 Localization Chinese - Localizable Strings

在此处输入图像描述

应用程序崩溃说找不到我的故事板

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'anotherstoryboard' in bundle NSBundle </Users/me/Library/Application Support/iPhone Simulator/6.1/Applications/8E036C84-6058-4420-94B4-1726E1F686AD/HelloWorld.app> (loaded)'

我做错了什么?为什么 iOS 在案例 2 中找不到正确的故事板?

4

11 回答 11

15

在开始在 Xcode 4.6.2 中本地化新的故事板后,我(再次)遇到了同样的问题。我检查了一切是否按照此处和其他地方的建议正确设置,确实如此。

对我来说,通过在 Xcode 中关闭项目并从 Finder 中手动清除 Xcode“Derived Data”目录(请参阅 Xcode 首选项)解决了这个问题。然后我重新打开了项目,做了一个干净的构建,瞧,故事板被正确编译并按预期工作。

于 2013-05-29T20:37:25.317 回答
3

单击 中的项目Project Navigator,选择您的项目并Info在顶部选择。接下来,您必须取消选择Use Base Internationalization并单击“删除”。

在此处输入图像描述

于 2014-01-13T18:01:45.947 回答
3

您会收到此错误,因为对于 iOS 6(Base Internationalization 需要),storyboard 文件被编译成 storyboardc 文件。它还将属于它的字符串文件复制到目标。因此在 iOS 6 设备上没有 .storyboard 文件。

要编译故事板文件,您需要确保它处于 Copy Bundle Resources 构建阶段。然后情节提要编译器(参见构建规则)启动并编译它。如果不是,那么这是一个错误,您应该报告它。

于 2013-02-18T07:56:18.640 回答
2

我尝试了与您完全相同的方法,我可以说这个错误会如您所显示的那样发生。

解决方案是从目标构建阶段删除和添加情节提要文件。因此,单击您的目标,如图所示目标的构建阶段

然后从构建阶段删除情节提要文件并再次添加。

这对我有用!

于 2013-02-08T13:57:14.743 回答
2

我通过将我的故事板拖到 finder 中解决了这个问题,然后删除了 Xcode 侧面板中的那个,然后将我最初拖到 finder 的那个重新添加到 Xcode 侧面板中。然后在“复制捆绑资源”中删除旧的 RED 故事板文件,并通过将其拖入手动添加新的故事板文件。

于 2014-02-03T06:09:47.173 回答
1

我遇到了同样的问题,花了 2 天时间来解决它。

当然,我尝试了以上所有操作,例如:清理项目,重置 iOS 模拟器中的内容和设置,删除 /Users/YourUsername/Library/Application Support/iPhone Simulator 中的所有文件,删除 /Users/YourUsername/Library/Developer 中的所有文件/Xcode/DerivedData,删除iOS设备中的App

没有什么能帮助我解决我的问题 - 使用 Base Internationalization + Storyboard.strings 的 Storyboard 本地化不会编译本地化的 Storyboard。

原因是该项目以前针对 iOS 5.1,但现在针对 iOS 6.1。更改项目部署目标后,我忘记更改情节提要中的编译设置。

什么对我有帮助 - 只需在情节提要的文件检查器中将“构建”更改为至少“iOS6.1 及更高版本”。

在此处输入图像描述

于 2014-04-14T04:57:30.870 回答
1

如果您的 Storyboard.strings 文件中存在语法错误,例如缺少 ; 或缺少“,似乎没有任何警告(Xcode 10.2.1),您只是没有在 Storyboard.strings 文件中获得任何本地化。

以下行中的文本颜色不会更改以指示存在问题。

最好的办法是逐行检查,确保没有遗漏任何内容。

于 2019-08-19T09:47:13.887 回答
1

解决了

我对一些阿拉伯语翻译有疑问。我已经尝试了帖子中提到的所有可能的方法,但没有一个对我有用。

最后我发现我的 Xcode 没有在我的故事板的字符串文件中报告错误!我修复了字符串文件中的问题,我的应用程序按预期工作!

(提示:您也可以检查控制台是否有错误)

于 2018-07-03T10:51:44.257 回答
0

在情节提要本地化设置中,尝试删除“基础”选项旁边的检查。iOS6下不支持

于 2013-11-20T17:12:06.730 回答
0

由于这是一个警告而不是错误,所以我一开始并不认为这会是一个问题,但最终它是我唯一的负载。在右侧边栏中,最左侧的选项(看起来像文档的图标)中,我看到了一个带有两个复选框的本地化部分,即 Base 和 English。基础已检查,英语未检查。

在此处输入图像描述

相反,我检查了英语,然后将下拉菜单更改为 Interface Builder。然后我取消选中Base。

在此处输入图像描述

当我再次检查构建规则时,Main.storyboard 不再是红色的。当我再次尝试在 5.1 模拟器中运行该应用程序时,它运行良好。注意:仅检查 English/Interface Builder 就足以让应用程序在 iOS 5.1 中运行,但随后您会遇到无法反映 Storyboard 更新的问题。您需要取消选中 Base 以便英语是情节提要的唯一版本;这样,更新将始终在您重新运行时立即反映出来。

于 2014-03-31T05:51:48.613 回答
0

基本国际化仅在iOS 6上受支持。

我遇到了和你一样的问题,但更糟糕的是,因为我没有在 iOS 5 上进行测试。我知道我的许多用户都经历过崩溃后才知道这一点。

所以,请注意。

我的博客上有关于此的详细信息。如您所知,xib 仍然有效。因此,将所有字符串转换为 xib(一点也不难)。

于 2014-04-23T07:58:39.707 回答