Iphone 根据特定的本地化动态切换XIB

Iphone 根据特定的本地化动态切换XIB,iphone,ios,ios4,nslocalizedstring,Iphone,Ios,Ios4,Nslocalizedstring,我使用这些方法 [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize]; 为了迫使我的应用程序在运行时(当用户点击一个简单调用这些方法的按钮时)更改其本地化,并且它工作得很好,但是,这些方法不足以将整个XIB切换到新语言(在我的例子

我使用这些方法

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; 
为了迫使我的应用程序在运行时(当用户点击一个简单调用这些方法的按钮时)更改其本地化,并且它工作得很好,但是,这些方法不足以将整个XIB切换到新语言(在我的例子中,是阿拉伯语),假设我有一个名为
HomeViewController.XIB
的XIB,它在XCode中作为目录打开,一个包含两个文件的目录:
HomeViewController.XIB(英语)
HomeViewController.XIB(阿拉伯语)
每个文件根据语言有自己的布局(例如,阿拉伯语XIB有从右到左的控件布局..),我尝试为当前控制器上的每个控件调用
removeFromSuperView
,然后为控件调用
addSubView
,但没有任何更改,应用程序仍然显示英文XIB

当点击语言按钮时,如何让我的应用程序在运行时将其XIB更改为正确的本地化版本


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

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


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

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


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

一些开发人员几乎解决了这个问题,请查看此示例应用程序: 它可以动态地将整个XIB从阿拉伯语切换到英语,反之亦然,我现在所坚持的是:我需要这个示例应用程序是选项卡式的,即带有两个选项卡的选项卡栏控制器,每个选项卡包含一个视图控制器(你知道,通常的方式),任何人解决了这个问题我都会非常感谢他/她。。。
等待您的帮助…

一些开发者同事几乎解决了这个问题,请看一下这个示例应用程序: 它可以动态地将整个XIB从阿拉伯语切换到英语,反之亦然,我现在所坚持的是:我需要这个示例应用程序是选项卡式的,即带有两个选项卡的选项卡栏控制器,每个选项卡包含一个视图控制器(你知道,通常的方式),任何人解决了这个问题我都会非常感谢他/她。。。
等待您的帮助…

但是我在用户默认设置中设置了对象@“ar”,因此当我尝试执行removeFromSuperView和AddSubView时,它必须加载正确的xib。该对象设置为阿拉伯语区域设置,默认区域设置为en。因此,一旦启动应用程序,它就会加载en-xib。我在运行时创建了一个新的nib,如下所示:HomeViewController*homevc=[HomeViewController alloc]initWithNibName:@“HomeViewController”Bundle:nil];然后,我将此视图控制器添加到导航控制器,然后将此导航控制器作为子视图添加到当前视图控制器。这就是它在运行时搜索的内容-如果区域设置为英语,则转到捆绑包中的英语xib文件,如果区域设置为阿拉伯语,则转到阿拉伯语文件夹。它创建了一个运行时绑定。那么这是否意味着不可能在运行时切换到所需的本地化xib?这个问题有解决办法吗?我看到很多应用程序都有一个切换语言按钮,当按下这个按钮时,UI会完全改变以匹配新的语言。但是我在用户默认设置中设置了对象@“ar”,所以当我尝试执行removeFromSuperView和AddSubView时,它必须加载正确的xib。该对象设置为阿拉伯语区域设置,默认区域设置为en。因此,一旦启动应用程序,它就会加载en-xib。我在运行时创建了一个新的nib,如下所示:HomeViewController*homevc=[HomeViewController alloc]initWithNibName:@“HomeViewController”Bundle:nil];然后,我将此视图控制器添加到导航控制器,然后将此导航控制器作为子视图添加到当前视图控制器。这就是它在运行时搜索的内容-如果区域设置为英语,则转到捆绑包中的英语xib文件,如果区域设置为阿拉伯语,则转到阿拉伯语文件夹。它创建了一个运行时绑定。那么这是否意味着不可能在运行时切换到所需的本地化xib?这个问题有解决办法吗?我看到很多应用程序都有切换语言按钮,按下此按钮后,UI将完全更改以匹配新语言。-1用于发布带有链接的答案,该链接很可能在将来过期,并且通常不提供任何其他信息。-1用于发布带有链接的答案,该链接很可能在将来过期,并且通常不提供任何其他信息。