0

如果我只需要更改文本字符串,它会很简单,但是 如何更改图像或 xib 文件(用于每个本地化)?

设置本地化的代码:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"Ukrainian", @"English", nil] forKey:@"AppleLanguages"];

或者

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects: @"English", @"Ukrainian", nil] forKey:@"AppleLanguages"];

(如果我已经完成了这段代码,并且应用程序已关闭,那么下次应用程序启动时它会使用为所选语言设置的所有资源)

我怎样才能做同样的事情但不重新启动应用程序?

我找到了很多示例,但这些示例显示了如何处理文本,以及如何处理其他资源,以及如何更新它们(针对当前选择的语言)?

示例: 即时更改 iOS 应用程序的语言

仅在 iPhone 上重新启动后更改语言

4

3 回答 3

1

你不能这样做(没有越狱)。您应该以某种方式对您的应用程序进行编码,当一些重要信息发生变化时您可以重新开始,而无需重新启动应用程序。例如,您可以弹出所有视图控制器并取消分配它们,然后让用户使用正确的语言重新加载它们。

但是请注意,通常你不应该做这样的事情。本地化在 iOS 上以一种非常优雅的方式解决。您只需本地化 .strings(以及可选的 .nib 和图像文件),系统会为您处理其余部分。当用户在设置应用中更改语言时,您的应用将被系统终止。下次用户启动应用程序时,它将加载正确的语言。

于 2013-04-03T11:52:48.407 回答
0

为什么要重新启动应用程序?我认为这是不可能的。但是您可以在applicationDidBecomeActiveorapplicationWillEnterForeground方法中做任何更改

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
于 2013-04-03T11:49:19.610 回答
0

这是不可能的,

虽然有一招

1> 从您的应用程序打开带有自定义 URL 的 safari 浏览器(例如 com.yourcompany.yourApp)

2> 在您的应用程序中注册该自定义 URL(从 plist 文件中您可以这样做),当该自定义 URL 在 safari 中打开时,它将从 safari 打开您的应用程序。

3> 从您的 .plist 文件中关闭“应用程序应在后台运行”。(您可以通过将 UIApplicationExitsOnSuspend 键添加到应用程序的 Info.plist 文件并将其值设置为 YES 来实现。)

于 2013-04-03T11:55:13.463 回答