このコードを使用して、デバイスの現地通貨記号を取得しています。
NSLocale *theLocale = [NSLocale currentLocale];
NSString *symbol = [theLocale objectForKey:NSLocaleCurrencySymbol];
NSLog(@"Symbol : %@",symbol);
NSString *code = [theLocale objectForKey:NSLocaleCurrencyCode];
NSLog(@"Code : %@",code);
アプリを再起動すると通貨記号が変更されますが、バックグラウンドからアプリを実行すると通貨記号が更新されません。
- iPhoneの設定で、地域を米国に変更し、通貨記号が「$」で表示されるアプリを起動しました。
- インドの地域を変更し、バックグラウンドからアプリを取得して同じコードを呼び出すと、再び「$」が表示されます。通貨記号が更新されていません。戻ってきて画面に再入力すると、通貨記号がインドの記号に更新されます。
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] を思い出しました。しかし地域は変わっていません。前の画面に戻って再度同じ画面に入ると、リージョンが更新されます。誰でもこれを解決するのを手伝ってもらえますか? ありがとう。