根据特定的本地化即时切换XIB

时间:2011-12-25 11:15:33

标签: iphone ios ios4 nslocalizedstring

我使用这些方法

[[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更改为正确的本地化。

P.S。当我在系统设置中更改整个模拟器本地化时,应用程序按预期工作,即它显示正确的本地化XIB。

2 个答案:

答案 0 :(得分:2)

在运行时决定加载哪个xib,正如您所说,当您更改模拟器设置时,您可以看到阿拉伯屏幕。

因此,xib的决定基于您在用户默认值中给出的内容,然后检查区域设置并对应于该区域设置xib已加载。

答案 1 :(得分:-1)

一些开发人员几乎解决了这个问题,请看看这个示例应用: https://rapidshare.com/files/3434929956/LangSwitch.zip 它将整个XIB从阿拉伯语切换到英语,反之亦然,我现在所困的是:我需要这个示例应用程序是标签式的,即带有两个标签的标签栏控制器,每个标签包含一个视图控制器(你知道,通常的方式),任何人都解决了这个问题我会很感激他/她... 等待你的帮助...