0

我正在使用此代码获取设备本地货币符号。

 NSLocale *theLocale = [NSLocale currentLocale];
 NSString *symbol = [theLocale objectForKey:NSLocaleCurrencySymbol];
 NSLog(@"Symbol : %@",symbol);
 NSString *code = [theLocale objectForKey:NSLocaleCurrencyCode];
 NSLog(@"Code : %@",code);

当应用程序重新启动货币符号更改但当应用程序从后台货币符号未更新时。

  1. 在 iPhone 设置中,我更改了美国地区并启动了应用程序,货币符号显示“$”。
  2. 当我更改印度地区并从后台获取应用程序并调用相同的代码时,它再次显示“$”。货币符号未更新。当我回来并重新进入屏幕时,货币符号更新为印度符号。

在 appDelegate 中:

- (void)applicationWillEnterForeground:(UIApplication *)application:

[[NSNotificationCenter defaultCenter] postNotificationName:@"CurrencyUpdated" object:nil];

在 sampleViewController 中:viewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadCurrencySymbol) name:@"CurrencyUpdated" object:nil];

在 sampleViewController 中:

-(void) reloadCurrencySymbol
{
    NSLocale *theLocale = [NSLocale currentLocale];
    NSString *symbol = [theLocale objectForKey:NSLocaleCurrencySymbol];
    NSLog(@"Symbol : %@",symbol);
    NSString *code = [theLocale objectForKey:NSLocaleCurrencyCode];
    NSLog(@"Code : %@",code);
}

有人可以帮忙解决这个问题吗?提前致谢。

编辑

我记得 [self viewDidLoad]; 但地区并没有改变。当我返回上一个屏幕并再次进入同一屏幕时,该区域正在更新。任何人都可以帮忙解决这个问题吗?谢谢。

4

2 回答 2

1

在您的 sampleview 控制器中将其添加到 viewdidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadCurrencySymbol) name: UIApplicationDidBecomeActiveNotification object:nil];

这是在应用程序激活时重新加载符号的正确方法

于 2012-07-23T13:03:55.810 回答
0

可能它类似于 MacOSX,当您更改语言时,您需要重新启动应用程序以使其以新的语言环境开始。

我猜你需要先退出,而且可能没有其他办法。

于 2012-07-23T12:42:46.873 回答