我正在开发一个包含300张图片(没有文字)的应用,并试图通过点击按钮更改语言而无需重新启动。
- (IBAction)changeArab:(id)sender {
NSArray* languages = [NSArray arrayWithObjects:@"en", @"fr", nil];
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
}
当我使用上面的代码重新启动应用程序时,我能够更改语言。
我使用所需的语言对所有图像进行了本地化,无论如何,一旦语言发生变化我可以重新加载视图,或者快速更改应用程序。
答案 0 :(得分:0)
是的,您可以在不重新启动应用的情况下进行更改。
您必须使用NSNotificationCenter。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(localeChanged:)
name:NSCurrentLocaleDidChangeNotification
object:nil];
}
- (void)localeChanged:(NSNotification *)notif
{
// the user changed the locale
//code to update views or data set.
}
如果您没有以这种方式本地化您的应用。然后将自定义观察者添加到通知中心,当用户在自定义设置视图中更改语言时,它将生成本地通知,应用程序会收到通知,然后您可以再次加载所有视图。