【问题标题】:Currency symbol not updating came from Background iPhone?未更新的货币符号来自背景 iPhone?
【发布时间】:2012-07-21 16:34:54
【问题描述】:

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

 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];但地区并没有改变。当我返回上一个屏幕并再次进入同一屏幕时,该区域正在更新。任何人都可以帮忙解决这个问题吗?谢谢。

【问题讨论】:

    标签: iphone ios currency regional-settings


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我试过你的代码。方法 -(void) reloadCurrencySymbol 仍在调用,但货币符号未更新/更改。你能帮我么。谢谢。
    • 刚刚进行了快速搜索,我看到了为 NSCurrentLocaleDidChangeNotification 添加AnObserver 的选项。你试过了吗?
    • 这个我没试过。我现在自己试试这个。谢谢你。我会尽快更新你。
    • 非常感谢您的帮助。完美地解决了这个问题。再次感谢。
    • 很高兴它有帮助! Apple Dev Docs 包含大量信息,可以帮助您解决任何问题。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。但是,当我从当前视图控制器返回并再次进入同一屏幕时,货币符号已更改。以我重新加载屏幕的方式使用 [self viewDidLaod];货币符号不变。有任何想法吗?谢谢。
    • Mr.Bigkm 你有什么想法吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-02-23
    • 2012-02-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多