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

不可能です、

ひとつコツがあるのに

1>アプリケーションからカスタムURL(com.yourcompany.yourAppなど)でSafariブラウザを開きます

2>そのカスタムURLをアプリに登録します(plistファイルから実行できます)。これにより、そのカスタムURLがサファリで開いたときにサファリからアプリケーションが開きます。

3>.plistファイルから「アプリケーションはバックグラウンドで実行する必要があります」をオフにします。(これを実現するには、UIApplicationExitsOnSuspend キーをアプリケーションの Info.plist ファイルに追加し、その値を YES に設定します。)

于 2013-04-03T11:55:13.463 に答える
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 に答える