Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 动态更改应用程序语言不适用于基本国际化_Ios_Objective C_Internationalization - Fatal编程技术网

Ios 动态更改应用程序语言不适用于基本国际化

Ios 动态更改应用程序语言不适用于基本国际化,ios,objective-c,internationalization,Ios,Objective C,Internationalization,对于附带的小样本项目,我使用基本国际化功能将一个故事板用于两种语言(英语和阿拉伯语)。 在这个项目中,我在故事板中有一个ViewController,带有UILabel、UIImageView和UIButton,我想通过点击按钮来本地化这个ViewController,因此进行语言切换的方法(在AppDelegate)如下: 但是ViewController将不会生效,除非我重新启动应用程序,或者执行exit(0)关闭应用程序,然后重新启动它 问题是:如何在不退出并重新启动应用程序的情况下切换应

对于附带的小样本项目,我使用
基本国际化
功能将一个故事板用于两种语言(英语和阿拉伯语)。
在这个项目中,我在故事板中有一个
ViewController
,带有
UILabel
UIImageView
UIButton
,我想通过点击按钮来本地化这个
ViewController
,因此进行语言切换的方法(在
AppDelegate
)如下:

但是
ViewController
将不会生效,除非我重新启动应用程序,或者执行
exit(0)
关闭应用程序,然后重新启动它

问题是:如何在不退出并重新启动应用程序的情况下切换应用程序的语言?

样本:

事先非常感谢你

p、 我已经阅读了几乎所有的相关问题,但没有一个能用基本情节提要来解决这个问题。

请参考此
NSArray* languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
NSString *currentLang = [languages objectAtIndex:0];

if([currentLang isEqualToString:@"en"]) { //change to arabic

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
else { //change to english

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = storyboard.instantiateInitialViewController;

self.window.rootViewController = vc;
[self.window makeKeyAndVisible];