15

xCode 4.6 で複数のストーリーボードとベース ローカリゼーションを使用しています。実際私は

やった:

1)プロジェクト情報のローカリゼーションを編集します:「ベース国際化を使用する」をチェックし、言語を追加しました:英語、中国語

2) 「anotherstoryboard.storyboard」という名前の新しいストーリーボードを作成します

3) ベースの国際化を使用して、新しいストーリーボード (File Inspector / Localize - Localize) をローカライズします。

4) アプリ デリゲートで、ローカライズされたストーリーボードを次のように動的に読み込みます。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"anotherstoryboard" bundle:nil];

ケース 1: => 動作する

新しいストーリーボード (ステップ 3) では、Localization Chinese - Interface Builder Cocoa Touch Storyboard を選択します。

ここに画像の説明を入力

それは機能しますが、ローカライズされたストーリーボードを維持し、IB で編集する必要があります。私はそのような動作を望んでいません。基本的な国際化を使用し、.strings ファイルをローカライズしたいだけです。

ケース 2: => クラッシュ

新しいストーリーボード (ステップ 3) では、Localization Chinese - Localizable Strings を選択します。

ここに画像の説明を入力

ストーリーボードが見つからないと言ってアプリがクラッシュする

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'anotherstoryboard' in bundle NSBundle </Users/me/Library/Application Support/iPhone Simulator/6.1/Applications/8E036C84-6058-4420-94B4-1726E1F686AD/HelloWorld.app> (loaded)'

私が間違っていることは何ですか?ケース 2 で iOS が適切なストーリーボードを見つけられないのはなぜですか?

4

11 に答える 11

15

Xcode 4.6.2 で新しいストーリーボードのローカライズを開始した後、同じ問題に (再び) 遭遇しました。ここや他の場所で提案されているように、すべてが適切にセットアップされていることを確認しましたが、実際にそうでした.

私にとっては、Xcode でプロジェクトを閉じ、Finder から Xcode の「派生データ」ディレクトリ (Xcode の設定を参照) を手動でクリアすることで、この問題は解決しました。その後、プロジェクトを再開し、クリーン ビルドを作成すると、ストーリーボードが適切にコンパイルされ、期待どおりに機能しました。

于 2013-05-29T20:37:25.317 に答える
3

このエラーが発生するのは、iOS 6(Base Internationalizationに必要)の場合、ストーリーボードファイルがstoryboardcファイルにコンパイルされるためです。また、それに属する文字列ファイルをターゲットにコピーします。したがって、iOS 6デバイスには、.storyboardファイルはありません。

ストーリーボードファイルをコンパイルするには、それがバンドルリソースのコピービルドフェーズにあることを確認する必要があります。次に、ストーリーボードコンパイラ(ビルドルールを参照)が起動し、コンパイルする必要があります。そうでない場合、これはバグであり、報告する必要があります。

于 2013-02-18T07:56:18.640 に答える
2

ストーリー ボードをファインダーにドラッグし、Xcode サイド パネルのストーリー ボードを削除してから、最初にファインダーにドラッグしたものを Xcode サイド パネルに再度追加することで問題を修正しました。次に、「バンドル リソースのコピー」で古い RED ストーリーボード ファイルを削除し、ドラッグして新しいストーリーボード ファイルを手動で追加します。

于 2014-02-03T06:09:47.173 に答える
2

私はあなたとまったく同じことを試みましたが、あなたが示したようにこのエラーが発生すると言えます。

解決策は、ターゲットのビルド フェーズからストーリーボード ファイルを削除して追加することです。したがって、画像に示すようにターゲットをクリックしますターゲットのビルド フェーズ

次に、ストーリーボード ファイルをビルド フェーズから削除し、再度追加します。

これは私のために働いた!

于 2013-02-08T13:57:14.743 に答える
1

私は同じ問題に直面し、それを解決するために2日を費やしました.

もちろん、プロジェクトのクリーニング、iOS シミュレーターのコンテンツと設定のリセット、/Users/YourUsername/Library/Application Support/iPhone Simulator のすべてのファイルの削除、/Users/YourUsername/Library/Developer のすべてのファイルの削除など、上記のすべてのことを試しました。 /Xcode/DerivedData、iOS デバイスでアプリを削除

私の問題を解決するのに役立つものは何もありません - Base Internationalization + Storyboard.strings を使用したスト​​ーリーボードのローカリゼーションは、ローカライズされたストーリーボードをコンパイルしません。

その理由は、プロジェクトが以前は iOS 5.1 を対象としていたが、現在は iOS 6.1 を対象としているからです。Project Deployment Target を変更した後、ストーリーボードの Compiling 設定を変更するのを忘れていました。

ストーリーボードのファイルインスペクターで、「ビルド対象」を少なくとも「iOS6.1以降」に変更するだけです。

ここに画像の説明を入力

于 2014-04-14T04:57:30.870 に答える
1

解決した

アラビア語の翻訳に問題があります。投稿に記載されているすべての可能な方法を試しましたが、うまくいきませんでした。

最後に、ストーリー ボードの文字列ファイルで Xcode がエラーを報告していないことがわかりました。文字列ファイルの問題を修正したところ、アプリが期待どおりに動作しました。

(ヒント: コンソールでエラーを確認することもできます)

于 2018-07-03T10:51:44.257 に答える
0

これはエラーではなく警告だったので、最初は問題ないと思っていましたが、最終的にはそれが私の唯一の負荷でした。右側のサイドバーの一番左のオプション (ドキュメントのようなアイコン) に、Base と English の 2 つのチェックボックスがある Localization セクションがありました。ベースはチェックされ、英語はチェックされていません。

ここに画像の説明を入力

代わりに、英語を確認してから、ドロップダウンを Interface Builder に変更しました。次に、ベースのチェックを外しました。

ここに画像の説明を入力

Build Rule を再度確認したところ、Main.storyboard が赤くなくなっていました。5.1 シミュレーターでアプリを再度実行しようとしたところ、問題なく動作しました。注: iOS 5.1 でアプリを実行するには、English/Interface Builder を確認するだけで十分ですが、ストーリーボードへの更新が反映されないという問題が発生します。Base のチェックを外して、ストーリーボードのバージョンが英語のみになるようにする必要があります。そうすれば、再実行するとすぐに更新が常に反映されます。

于 2014-03-31T05:51:48.613 に答える
0

ストーリーボードのローカリゼーション設定内で、「ベース」オプションの横にあるチェックを外してみてください。iOS6 ではサポートされていません

于 2013-11-20T17:12:06.730 に答える