1

バインディングを介して 2 列の NSVTableView を設定しようとしていますが、データがテーブルに表示されません。

XCode の場合:

AppDelegate に、対応する @property と @synthesize だけでなく、データを保持する NSMutableArray があります。

イベントでは、NSMutableArray で [removeAllObjects] を呼び出し、いくつかの NSDictionary オブジェクトを再設定します。各ディクショナリには、名前と値の 2 つの KVP が含まれています。

IB では:

NSArrayController を追加し、その Content Array を AppDelegate にバインドし、ModelKeyPath を AppDelegate の NSMutableArray の名前に設定しました。

NSTableView で、Content を ArrayController にバインドしました。ControllerKey = "arrangedObjects"、ModelKeyPath = empty .

2 つの列のそれぞれについて、Value を AppController にバインドし、ModelKeyPaths をそれぞれ NAME と VALUE に設定しました。ControllerKey = "ArrangedObjects".


アプリのデリゲートで NSArray を使用したり、値を更新する必要があるたびに新しいものを作成したりするなど、他にもいくつか試しました。私が忘れている小さな何かがあるに違いありません。それは何ですか?

ヨルジ

4

1 に答える 1

4

NSArrayControllerは、ストレージの点でNSMutableArrayとそれほど違いはありません。のようなものを使用して[[mutableArray firstObject] valueForKey:@"NAME"];必要な値を取り戻すことができる場合は、配列コントローラーが正しい値を提供できるはずであり、適切な接続があればバインディングが機能するはずです。

ただし、前述のコード行で必要な値が得られない場合は、別の問題が発生します。確かに言うのは難しいですが、今のところ、すべて同じ2つのキーを持つ辞書の配列があると仮定します(それらfirstKeyをとと呼びましょうsecondKey)。Iiはさらに、最初の列にのすべての値をfirstKey表示し、2番目の列にの値を表示させることが目標であると想定しますsecondKey。この理論では、AppDelegateのNSMutableArrayは上記の方法のままですが、バインディングは少し変更されます。

まず、使用しているnibファイルのファイルの所有者がに設定されていることを確認しますAppDelegate

次に、ArrayControllerContentArrayをにバインドする必要がありますFile's Owner.mutableArray

列をバインドするだけで問題が発生したことはないため、テーブルビューの全体的なバインドはそれほど重要ではありません。

最初の列の値はにバインドする必要がありますArrayController.arrangedObjects.firstKey。もちろん、2番目の列は、モデルのキーパスが。であることを除いて同じですsecondKey

于 2010-05-31T02:33:45.143 に答える