FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil];
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error..
それは言う:
"Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'"
LoginButtonという変数がないので、なぜエラーが発生するのかわかりません...
ありがとうございました
エラーが発生します原因 loginButtonというプロパティはありません。 .xibファイルを確認します。クラスコードに存在しないとしても、loginButtonを指定するFinalViewWithSendingオブジェクト(おそらくファイルの所有者)への不正なリンクがほぼ確実に存在します。
フィリップミルズは正しいです。
ここでの答えは、検索するすべての人にとって、ストーリーボードを編集して、指定された未定義のキーへのリンクを削除することです。外部エディタでストーリーボードファイルを編集する必要があります。階層内のストーリーボードリストを右クリックして、[Finderに表示]またはあなたが持っているものをクリックします。テキストエディターで開き、検索して上記のリンクを削除し、保存してXcodeに戻ります。これ以上の問題はありません。
これは、ビューコントローラーから何かを不適切に削除した場合に発生します。
ここで同意-Phillip Millsは正しいです。
誰かがストーリーボードをテキストエディターで開くと述べました-これは必要ありません。
ストーリーボードをクリックするだけで、接続インスペクタに移動します。問題のあるコンセントがある場合は、コンセントの横に感嘆符が表示されます。消して。
これがこのエラーの最初の検索結果なので、私は新人のような回答を書くことにしました。
ViewControllerでコードを生成するボタンからCtrlでドラッグされた接続があり、接続を削除せずにコードのみを削除した場合、このエラーが発生します。
アクションとして追加したいときに、誤っていくつかのボタンをアウトレットとして追加したため、このエラーが発生しました。生成されたコードを削除しましたが、接続不良がまだ残っていました。
それらを見つけて削除するには、「表示」->「ユーティリティ」->「接続インスペクタの表示」
次に、使用しているさまざまなボタンをクリックし、[x]をクリックして不良な接続を削除します。
ローカライズがある場合は、すべてのストーリーボードで不良リンクを検索します(ストーリーボードを展開してローカライズされたストーリーボードを見つけます)。
これが私の状況でした。私は1つのストーリーボードで不良リンクを探していましたが、ローカライズされたものでした。
私は同じ問題を抱えていました:
以前、テキストフィールドからヘッダーファイルにストーリーボードを使用して接続していました。後で、オブジェクトの接続の名前を変更することを決定しましたが、残念ながら接続を適切に切断していません。この問題が私の問題と同じである場合、以前はボタンへの接続が存在し、ヘッダーのコードは削除されましたが、接続は削除されませんでした。
あなたが探しているビューでオブジェクトの接続を確認してください。
この返信は、質問が行われた時間よりも遅れる可能性がありますが、この問題が発生したため、ここに掲載されているすべての解決策を試しましたが、どれもうまくいきませんでした。
これは、将来誰でも助けることができる私の解決策です。
最初の問題、:カスタムセルクラスを使用して接続を確立し、すべてがアプリで正常に機能した後、カスタムセルクラスの名前を変更してアプリを実行しましたが、setValue:forUndefinedKey:]エラーでクラッシュしました。
My solution:.xibファイルをクリックし、IDインスペクタを選択して、カスタムクラス->クラスタグに新しい名前付きクラスを入力しました。アプリのエラーを解決しました。
おそらく、以前にLoginButton、Cmd + Shift + Fを作成し、「LoginButton」を見つけて、参照アウトレットを削除して再構築しました。
関連付けられたオブジェクトを使用して、サブクラス化を回避できます。 setValue:forKey:とsetValue:forUndefinedKey:の詳細については、ヘッダーファイル(NSKeyValueCoding.h)を参照してください。
あなたの説明によると、あなたのインターフェースビルダーでnewViewを見つけて右クリックすると、異常なloginButtonのようなものが表示されます。
FinalViewWithSendingビューコントローラーのxibの接続インスペクターに移動し、ログインボタンの参照を削除します。その後、実行されます。それを試してみてください... :)
今日私は働いていて、これと同じエラーを提示しました、Phillip Millsの応答が正しいことを使用し、リンクが割り当てられていなかった1つのViewController.xibにいくつかのラベルがありました。 、フィリップミルズの回答に感謝します。