3

複数のビュー コントローラーから呼び出すことができるカスタム ポップアップ ビューを作成しようとしていますが、問題が発生しています。

viewController 自体から「presentPopup」メソッドを作成して呼び出す限り、正常に動作させることができます。各 VC で個別のメソッドを記述するよりも、別のクラスでメソッドを記述し、パラメータを渡してパーソナライズする方がはるかに望ましいと思います。

とにかく、そうしようとするたびに、有名な「このクラスはキーのキー値コーディングに準拠していません」というエラーが発生し続けます。クラスのキー値のコーディングを準拠させる方法について誰かが洞察を持っているかどうか疑問に思っていますか? または、一般的にこれをどのように行うのですか?? ありがとう!!

4

2 に答える 2

3

この回答の最後に簡単な説明がありますが、最近似たような質問をいくつか見たので、少し背景を説明したいと思います。

エラーは、クラスがキー値コーディングに準拠していないキー示しているはずです。あなたの質問の言い回しは、クラスを「キー値コーディングに準拠」するために追加できる一般的なコードがあると考えていることを示唆しています。そうではありません。

すべてのココア/ココア タッチ オブジェクトは、キー値のコーディング操作を実行できます。valueForKey:KVC を使用すると、アクセサー メソッドを直接使用するかsetValue:forKey:、直接使用する代わりに、アクセサー メソッドにアクセスできます。

表示されているエラーは、次の行に沿っています。

XXX - このクラスはキー YYY に準拠したキー値コーディングではありません。

XXX は問題のクラス、YYY はキーです。だからどこかで、[xxx setValue:something forKey:@"YYY"]呼ばれています。

この時点で、あなたは「setValue:forKey自分のコードでは使ったことがない!」と考えているでしょう。君の言う通りかもね。ただし、xib ファイルをロードするときにフレームワークによって使用されます。すべてのアウトレットはキー値コーディングを使用して設定されます。

したがって、リンク先のクラスで削除または名前変更されたものに接続されている xib にアウトレットがあります。運が良ければ、その横に小さな感嘆符が表示されます。そうでない場合は、インターフェイス ビルダーでも表示されず、xib をソース コードとして編集し、XML から削除する必要があります。

于 2012-06-23T05:49:52.160 に答える
0

あなたはsetValue:forKey:どこかでメソッドを呼び出しています(おそらく、あなたが呼び出すNSMutableDictionaryべき場所でsetObject:forKey)または同様のもの...

于 2012-06-23T03:07:26.430 に答える