我使用这些方法
[[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。
答案 0 :(得分:2)
在运行时决定加载哪个xib
,正如您所说,当您更改模拟器设置时,您可以看到阿拉伯屏幕。
因此,xib
的决定基于您在用户默认值中给出的内容,然后检查区域设置并对应于该区域设置xib已加载。
答案 1 :(得分:-1)