presentViewController:iOS <6(AutoLayout)でクラッシュ


92

これは私が得ている奇妙なクラッシュです。特定のViewControllerに移動するボタンを押すと、クラッシュが発生します。クラッシュする行は次のとおりです。

DestinationInformationViewController *info = [[DestinationInformationViewController alloc] init];
[info setModalTransitionStyle: UIModalTransitionStyleCrossDissolve];
[self presentViewController:info animated:YES completion: nil]; // CRASHES HERE
[info release];

クラッシュトレースは次のとおりです。

*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *** First throw call stack: (0x3758288f 0x35287259 0x37582789 0x375827ab 0x3153d54d 0x3153d6bb 0x3153d423 0x314ce001 0x3143c3c7 0x31319c59 0x3128fc17 0x3129a267 0x3129a1d5 0x3133959b 0x31338367 0x84091 0x374dc3fd 0x31271e07 0x31271dc3 0x31271da1 0x31271b11 0x31272449 0x3127092b 0x31270319 0x31256695 0x31255f3b 0x33c9822b 0x37556523 0x375564c5 0x37555313 0x374d84a5 0x374d836d 0x33c97439 0x31284cd5 0x82bb3 0x71200) terminate called throwing an exception(gdb) Could not instantiate class named NSLayoutConstraint

注:これは私のiPhone 4 iOS 5.1ではクラッシュしますが、iPhone 4S iOS 6 Beta 2ではクラッシュしません


2
Xcode 4.5にアップグレードしてiphone 5.1でアプリをアップグレードした後も同じ問題が発生しましたこのリンクを見てください:artstudioh.com/calculator/images/error_xcode.png
Sinuhe

はい、私達はそれを確立したと思います:)
MCKapur

回答:


201

これはXcodeの新しいインターフェイスビルダーの問題だと思います。Xcode 4.5のインターフェイスビルダーを使用して.xibをビルドしましたか?今、同じ問題に遭遇しました。それが問題だと思います。私のアプリはiOS 6で動作しますが、古いものはありません。

そして、あなたはあなたのxibsのためにオフすることを確認する必要がありますUse Auto Layout

これは、次の方法で実行できます。

  1. xibを開きます。
  2. に行く File Inspectorタブにます。
  3. を見つける Interface Builder Document右側のツールバーでセクションを。
  4. Use Auto Layoutオプションのチェックを外します。

37
ええ、ペン先の「自動レイアウトを使用」をオフにする必要があります。
Wevah

はい、同じ問題です。それについて何をしますか?Xcode 4.4でテストする必要があります(これは理由かもしれませんが、奇妙な理由で私のiPhone 4 iOS 5.1はXcode 4.5で実行できます... iOS 6ではないのですが)
MCKapur

16
xibのメインビューの右側のツールバーにあるInterface Builder Documentセクション。
マーク

興味のある方のために、プログラムでビューを設定する古いビューコントローラ用に、Xcode 4.5でnibファイルを作成しました。新しいnibがiOS 5では機能しないことにすぐに気付いたので、nibファイルを削除し、プロジェクトに新しいnibファイルが存在しなくなったと思っていても、同様のエラーが発生し始めました!解決策は、.hファイルと.mファイルの名前を変更することでした。
ケラー

2
最近のAppleの品質管理に何が起こっているのか少し心配です。
アードチハイ

43

スクリーンショット

新しいXCodeアップデートとIOS6 SDKをダウンロードしたときにも同じ問題が発生しました。これが私がそれを解決した方法です:

エラーが発生するインターフェイスビルダーファイル(xibまたはストーリーボードファイル)を選択します。XCodeの右側にあるアシスタントエディターで、左側から最初のタブを選択します。上記のスクリーンショットのように、[自動レイアウトを使用]オプションのチェックボックスがあります。チェックボックスをオフにします。


4

Nagarajaが「xibを使用していない場合に同じように解決する方法を教えてください。まさにこの問題に遭遇しました。xibを使用してコントローラーを作成し、その後xibファイルを削除することにしました。クラッシュは解消されませんでした。問題は私が実装する必要があったこと

- (void) loadView

私のコントローラクラスで。このメソッドを実装すると、問題は解決しました。


1

presentViewControllerでのクラッシュのもう1つの考えられる理由は、nibに存在しない変数に接続されているものがあることです-変数の名前が変更されたか、削除されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.