5

がありNSCollectionView、その中にdataArray定義selectedIndexes NSIndexSetされているものがありFile's Ownerます。(そのプロジェクトでMonoMacを使用しているため、単純なもので作業するのに問題があったNSArrayControllerため、ソースを自分で実装することにしました。)コントローラーを初期化するときに、にデータを追加NSMutableDictionarydataArrayます。アプリケーションがウィンドウを表示すると、追加したすべてのデータが適切に表示されます。

問題は、データソースへの変更がインターフェイスにまったく影響を与えないことです。対応するキーを使用して値をバインドしたため、データソースにアイテムを追加、変更、または削除するときに、インターフェイス自体が自動的に更新されるべきではありませんか?

私は何かが足りないのですか?それについて何か考えはありますか?

どうもありがとう
–f

4

1 に答える 1

2

データ ソースの対多関係にバインドするときは、データ ソースがこのプロパティの Key-Value Observing に準拠していることを確認する必要があります。のような変更可能なコレクションにパブリック プロパティを持つだけでは十分ではありませんNSMutableArray

データ ソースの実装では、NSKeyValueObservingプロトコルのメソッドを使用して、行った変更を通知する必要があります (willChange:valuesAtIndexes:forKey:対多関係を使用)。

パフォーマンスが単純な実装よりも重要でない場合はNSArray、プロパティに (不変) を使用して、データが変更されたときに常に新しい配列を割り当てることもできます。ただし、この方法では、追加または削除されたオブジェクトの適切なアニメーションは得られません。

于 2011-02-07T16:34:56.163 に答える