1

私はこれらの方法を使用します

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; 

実行時 (ユーザーがこれらのメソッドを呼び出すボタンをタップしたとき) にアプリのローカリゼーションを強制的に変更すると、完全に機能しますが、これらのメソッドは XIB 全体を新しい言語に切り替えるのに十分ではありません (これは私の言語にあります)。ケース、アラビア語)、HomeViewController.xibXCode のディレクトリとして開く名前の XIB が 1 つあるとします。これは、2 つのファイルのディレクトリです。HomeViewController.xib (English)HomeViewController.xib (Arabic)ファイルには、言語に応じて独自のレイアウトがあります (たとえば、アラビア語の xib には右から左へのコントロール layout があります。 .)、私はremoveFromSuperView現在のコントローラーのすべてのコントロールを呼び出してからコントロールを呼び出そうとしましaddSubViewたが、何も変更されていません。アプリはまだ英語の XIB を表示しています。

その言語ボタンがタップされたときに、実行時にアプリで XIB を正しいローカライズされたものに変更するにはどうすればよいですか。

ps システム設定でシミュレーター全体のローカライズを変更すると、アプリは期待どおりに動作します。つまり、正しいローカライズされた XIB が表示されます。

4

2 に答える 2

2

xibシミュレーターの設定を変更すると、アラビア語の画面が表示されると言うように、実行時にどれがロードされるかが決定されます。

したがって、の決定はxib、ユーザーのデフォルトで指定した内容に基づいており、ロケールをチェックし、そのロケールに対応する xib がロードされます。

于 2011-12-25T11:23:41.963 に答える
-1

一部の仲間の開発者が問題をほぼ解決しました。このサンプル アプリをご覧ください: https://rapidshare.com/files/3434929956/LangSwitch.zip アラビア語から英語に、またはその逆にオンザフライで XIB 全体を切り替えます。 「今行き詰まっているのは、このサンプル アプリをタブ化する必要があることです。つまり、2 つのタブを持つタブ バー コントローラーが必要です。各タブには 1 つのビュー コントローラーが含まれています (ご存知のように、通常の方法です)。誰でもこの問題を解決できます。彼/彼女にとても感謝しています...あなたの助けを待っています...

于 2011-12-26T19:00:09.947 に答える