【发布时间】:2014-02-21 07:29:41
【问题描述】:
我创建了一个语言选择屏幕,用户可以在其中选择应用 (iPad) 的首选语言。
我这样提交语言更改:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"fr"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
它运行良好,只是需要重新启动应用程序才能使 UI 采用新的语言设置。根据 Apple 的文档:
为了检测偏好值何时发生变化,应用还可以 注册通知 NSUserDefaultsDidChangeNotification。这 共享的 NSUserDefaults 对象将此通知发送到您的应用 每当它检测到位于其中一个的首选项发生变化时 持久域。您可以使用此通知来回复 可能会影响您的用户界面的更改。例如,您可以 使用它来检测对用户首选语言的更改并更新 适当的应用内容。
看来我需要注册通知 NSUserDefaultsDidChangeNotification 并更新我的 UI。哪个班级应该收听通知?知道代码是什么样的吗?我的应用基于 SKScenes 和 Sprite Kit 对象,而不是 xib 和 UIViewControllers。
【问题讨论】:
标签: ios ios7 internationalization