IPhoneで開発中のアプリをテストしようとしています。そのために、ターゲットをシミュレーターからXcodeのデバイスに変更しました。アプリケーションはデバイスに正しくアップロードされ、機能します。メインビューが表示されますが、セカンダリビューを開こうとすると、アプリケーションがクラッシュします。
IPhoneログ(コンソールを表示するためにiPhone構成ユーティリティをインストールしました[これはiPhoneからログを表示する唯一の方法ですか?])このエラーを確認できます。
Could not load NIB in bundle
しかし、シミュレータでは問題なく動作します。どうしましたか?何か案は?
デバイスで大文字と小文字が区別されることがあり、シミュレータでは区別されないことがあります。
Xibのファイル名は何ですか?
または
シミュレーターからアプリをアンインストールして再度インストールしてみてください-シミュレーターには、アプリの前回の実行から古いファイルが残っている可能性があります-開発中にxibの名前を変更/移動しましたか?
私は同じ問題を抱えていて、それを次のように修正しました:
同様の問題があり、同じエラーが発生しました。 「NIB名」の下の属性パネルで、xibファイルの完全な名前を使用していたことがわかりました。
「SomeViewController.xib」を使用せず、「。xib」拡張子なしで「SomeViewController」を使用してください。
_initWithNibName:@"MyViewController"
_を呼び出すときに同じ問題が発生しました
呼び出しをinitWithNibName:NSStringFromClass([MyViewController class])
に変更するとうまくいきました
次のことを試すことができます。
私の場合、xibはバンドルにコピーされていませんでした。アプリケーションターゲットの「バンドルリソースのコピー」ステップにxibを追加すると、すべてがうまくいきました。
私はついにこれらの2つのステップでその問題を解決することができました:
なぜシミュレータで動作するのかわかりません:(
私にとって、問題はまさにFreeAsInBeerが言ったことでした:nibはどういうわけかバンドルから欠落していましたが、以前はそこにあり、アプリの以前のバージョンでは適切に機能していました。
この問題を解決するために、次のことを行いました。
これは私がそのメッセージを受け取ったときに私にとってうまくいったことです。状況は誰にとっても同じではないため、マイレージは異なる場合がありますが、これがこの問題に遭遇した人に役立つことを願っています。
-エヴァン
このエラーの原因となる単純な間違いは、個々のNibファイルではなくストーリーボードを使用しているときに、インポートされたviewControllerでinitWithNibNameを試行することです。この場合は、存在しないnibで初期化しようとする代わりに、コントローラーを初期化するか、それらのフィールドをnilで初期化してください。
Storyboardでnibがない場合は、initWithNibName:bundle:をinit OR initWithNibName:nil bundle:nilに変更します。
同じエラーメッセージが表示されました。しかし、私の問題は、私の電話の言語設定が「英語」に設定され、地域が「英国」に設定されていることでした。ただし、ロードできなかったファイルはde.lprojディレクトリに置かれました。ファイルをルートディレクトリに移動すると解決しました。
私は同じ問題に出くわしました。私の場合、nib名は「MyViewController.xib」で、名前を「MyView.xib」に変更しました。これでエラーがなくなりました。
また、プロジェクトをXCode 3から4.2に移動しました。パスタイプの変更は重要ではありません。
私は正確にあなたが説明した振る舞いを持っていました:シミュレーターで動作しますが、デバイスで実行すると「バンドルでNIBをロードできませんでした」を取得し、アプリは起動イメージで動かなくなります。
私の場合、問題はXcodeが英語のローカリゼーションで自動的に作成したMainWindow.xibファイルに関するものでした。アプリで英語とイタリア語をサポートしていますが、イタリア語用のローカライズ版のMainWindow.xibがないことに気付きました。
このファイルをローカライズする必要がなかったので(ローカライズを作成するためのXcodeのデフォルトです)、英語のローカライズを削除するだけで問題を修正し、ローカリゼーションとは無関係に同じファイルを使用しました。問題を修正するもう1つの方法は、必要に応じて、不足しているローカライズ版を追加することです。
デバイスがイタリア語に設定されているため、アプリがデバイスでクラッシュしていました。代わりにシミュレータが英語に設定されていたため、アプリが正しく実行されました。確認のために、シミュレーターをイタリア語に設定し、アプリがクラッシュしてローカライズの問題を確認しました。
右側のウィンドウのxibからすべてのローカリゼーションを削除して実行します。多分ファイルはローカリゼーションフォルダーにあります。
また、initViewCoderから子ビューコントローラをロードしたときにもこの問題が発生しました。これは初期化に適した場所ですが、ビューがロードされた後で実際の子として追加する必要があることに注意してください。
次のようにシフトしてください:
[self addChildViewController: self.pageViewController];
[self.view addSubview: self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
...あなたのinitメソッドからviewDidLoadへ。これは特にあなたの問題ではありませんが、これは他の人に役立つかもしれません。
その価値については、タブバーボタンの1つに間違ったクラスが割り当てられていると、このエラーが発生しました。
私も同じ問題を抱えています。そして私の解決策は、ビューのすべてのローカリゼーションを削除することです。