我使用这些方法
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
强制我的应用程序在运行时改变其本地化(当用户点击一个简单调用这些方法的按钮时),它工作完美,然而,这些方法不足以将整个XIB切换到新语言(在我的情况下,阿拉伯语),假设我有一个名为HomeViewController.xib
的XIB,它在XCode中作为目录打开,一个包含两个文件的目录:HomeViewController.xib (English)
和HomeViewController.xib (Arabic)
每个文件都有自己的布局根据语言(例如阿拉伯语xib有从右到左的控件布局..),我试图调用removeFromSuperView
为当前控制器上的每个控件,然后调用addSubView
的控件,但没有任何改变,应用程序仍然显示英文xib。
我怎么能让我的应用程序改变它的XIB到正确的本地化在运行时,当语言按钮点击。
注。当我在系统设置中更改整个模拟器本地化时,应用程序按预期工作,即它显示正确的本地化XIB。
在运行时决定将加载哪个xib
,正如您所说的,当您更改模拟器设置时,您可以看到阿拉伯语屏幕。
所以xib
的决定是基于你在用户默认设置中给出的,然后它检查区域设置并加载相应的区域设置xib
一些开发人员几乎解决了这个问题,请看看这个示例应用程序:https://rapidshare.com/files/3434929956/LangSwitch.zip它将整个XIB从阿拉伯语切换到英语,反之亦然,我现在卡住的是:我需要这个样本应用程序是选项卡,即有两个选项卡的选项卡栏控制器,每个选项卡包含一个视图控制器(你知道,通常的方式),任何人解决这个问题,我将非常感激他/她…等待着你们的帮助……