基地国际化和多故事板不能正常工作

我正在玩多个故事板,并在xCode 4.6上进行本地化。 其实我

我做了:

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

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

3)使用Base国际化本地化我的新故事板(File Inspector / Localize – Localize)。

4)在我的应用程序委托,我dynamic加载我的本地化故事板,就像这样:

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

情况1: =>有效

对于我的新故事板(步骤3),我select本地化中文界面生成器cocoa触摸故事板

在这里输入图像说明

它的工作,但现在我必须保持本地化故事板,用IB编辑它们。 我不想要这样的行为,我只想使用base国际化和本地化.strings文件。

情况2: =>崩溃

对于我的新故事板(步骤3),我select本地化中文 – 可本地化的string

在这里输入图像说明

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

 '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中find正确的故事板?

在Xcode 4.6.2中开始本地化一个新的故事板之后,我又碰到了同样的问题。 我检查了一切正确的build立在这里和其他地方build议,事实上是这样的。

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

你会得到这个错误,因为对于iOS 6(基本国际化是必需的)故事板文件被编译成storyboardc文件。 它还将属于它的string文件复制到目标。 因此,在iOS 6设备上没有.storyboard文件。

要获得编译的故事板文件,您需要确保它位于“复制包资源”构build阶段。 然后故事板编译器(参见构build规则)开始编译并编译它。 如果没有,那么这是一个错误,你应该报告。

我试着和你一样,我可以说,这个错误将会发生,正如你所示。

解决方法是从目标构build阶段中删除并添加故事板文件。 因此,点击图像中显示的目标 建立一个目标的阶段

然后从构build阶段中删除故事板文件并再次添加。

这对我有用!

点击Project NavigatorProject Navigator ,select你的项目并select顶部的Info 。 接下来,您必须取消选中Use Base Internationalization ,然后点击“删除”。

在这里输入图像说明

我面临同样的问题,花了两天的时间来解决它。

当然,我尝试了以上所有的东西,比如:清理项目,重置iOS模拟器中的内容和设置,删除/ Users / YourUsername / Library / Application Support / iPhone Simulator中的所有文件,删除/ Users / YourUsername / Library / Developer中的所有文件/ Xcode / DerivedData,在iOS设备上删除应用程序

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

原因是之前的项目是iOS 5.1的目标,而现在是iOS 6.1。 更改项目部署目标后,我忘记更改故事板中的编译设置。

什么帮助我 – 只要在你的故事板的文件检查器中将“构build”改为至less“iOS6.1及更高版本”。

在这里输入图像说明

在故事板本地化设置中,尝试删除“基本”选项旁边的检查。 它不支持在iOS6下

我通过拖动我的故事板到查找器,然后删除在Xcode侧面板中的一个,然后重新添加一个我原来拖动find回到Xcode侧面板的问题。 然后在“复制束资源”中删除旧的红色故事板文件,并通过拖动手动添加新的红色故事板文件。

既然这是一个警告,而不是一个错误,我不认为这是一个问题,但最终这是我唯一的负担。 在右侧的最左边的选项(看起来像文档的图标),我看到一个本地化部分有两个checkbox,基本和英语。 基地被检查和英语unchecked。

在这里输入图像说明

相反,我检查了英文,然后将下拉菜单更改为Interface Builder。 然后我没有选中基地。

在这里输入图像说明

当我再次检查构build规则时,Main.storyboard不再是红色的。 而当我试图再次在5.1模拟器中运行应用程序时,它发生得很好。 注意:只需检查英文/界面生成器就足以使应用程序在iOS 5.1中运行,但是会遇到不能反映故事板更新的问题。 你需要取消选中Base,这样英文才是故事板的唯一版本。 这种方式更新将永远反映,只要你重新运行。

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

我遇到了同样的问题,但更糟的是,因为我没有在iOS 5上进行testing。在知道我的许多用户遇到崩溃之后,我才知道这一点。

所以,请注意。

在我的博客上有关于这个的细节。 正如你所知,xib仍然有效。 因此,将所有string转换为xib(根本不难)。