我需要在iOS应用程序变为活动状态时更改其本地化。
所以..
我在settings.bundle
文件中通过main.m
制作的设置中有一个语言选择器。我正在读这样的设置
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
// --
NSString *appLang = [[NSUserDefaults standardUserDefaults] stringForKey:@"appLang"];
if (appLang == nil)
[[NSUserDefaults standardUserDefaults] setValue:[[NSLocale preferredLanguages] objectAtIndex:0] forKey:@"appLang"];
[[NSUserDefaults standardUserDefaults]
setObject:[NSArray arrayWithObjects:[[NSUserDefaults standardUserDefaults] stringForKey:@"appLang"], nil]
forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
[appLang release];
// --
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
[pool release];
return retVal;
}
因此,应用程序使用设置中的数据更改不同语言的图像。
现在,我正在使用条件来定义这样的语言:
if ([[[NSLocale preferredLanguages] objectAtIndex:0] isEqual:@"en"])
一切正常,但问题是:当应用程序变为活动状态时,我可以更改应用程序的本地化(使用我的方法)(applicationWillEnterForeground或类似的东西)?我怎么能这样做?
答案 0 :(得分:0)
您可以在视图控制器中收听UIApplicationWillEnterForegroundNotification
。你可以这样做:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFunc) name:UIApplicationWillEnterForegroundNotification object:nil];
当应用程序进入前景时myFunc
将被调用,在那里您将能够设置所有内容 - 设置正确的本地化,切换图像等。
我不知道它是否正是您需要的,但假设您有一个名为myImage
的UIImageVIew并且您想要将新图像加载到此容器中,您只需设置它的图像属性即可设置myFunc
喜欢这样:
- (void) myFunc {
/*
set localization parameters
*/
// set image
myImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"img_%@.jpg", appLang]];
}