0

私の質問は、InterfaceBuilderとIKImageBrowserViewが期待どおりにバインディングを実装していないことに関連しています。

NSArrayControllerに到達するためのかなり長いキーパスがあり、その内容をIKImageBrowserViewに表示します。

これは、NSTextFieldの表示パターンバインディングをAppDelegateの: currentOrder.imagesArray.unvalidatedImages.arrangedObjects.@countにバインドしているキーパスです。これは正常に機能し、現在の注文に属する画像の配列内の未検証のアイテムの数を取得します。これは、想定されていることです。

次のキーパスをAppDelegateのIKImageBrowserViewにバインドしようとするとcontentcurrentOrder.imagesArray.unvalidatedImages.arrangedObjectsInterface Builderはエラーを表示しませんが、代わりに何も入力していないかのように動作します。インスペクターに戻ると、バインディングキーパスが再び空白になります。

ただし、以下はコンソールに記録されます。 Ignoring exception related to working with bindings: NSUnknownKeyException, [<NSCustomObject> addObserver:<IKImageBrowserView ...> forKeyPath:@"currentOrder.imagesArray.unvalidatedImages.arrangedObjects" ...] was sent to an object that is not KVC-compliant for the "currentOrder" property.

私のAppDelegatecurrentOrderは、保持された@propertyとして実装され、すべてのサブキーも@propertiesです。上記のNSTextFieldは問題なく変更を読み取ることができるため、これらのプロパティはKVCであると確信できます。興味深いことに、IKImageBrowserViewはにselectionIndexesバインドできますが、バインドできない...unvalidatedImages.selectionIndexesのはそれだけcontentです。

NSArrayControllerをnibファイルに配置し、Content Arrayを...arrangedObjectsバインドして、IKImageBrowserViewを配列コントローラーにバインドするという回避策を実装しましたが、より適切なソリューションがあれば、または少なくとも何かをしているのかどうかを知ることができれば幸いです。間違い。

ありがとうございました!

4

1 に答える 1

1

<IKImageBrowserDataSource>アプリデリゲートにのメソッドを実装し_dataSource、バインディングの代わりに接続を使用してみましたか?それは私にとってはうまくいき、Appleのチュートリアルでそれを行う方法です。

基本的には、データを実装– numberOfItemsInImageBrowser:– imageBrowser:itemAtIndex:て提供するだけで済みますが、それほど悪くはありません。少し注意<IKImageBrowserItem>が必要なのは、データをラップするクラスを実装することですが、それでも多大な労力は必要ありません。上にリンクされているチュートリアルは大いに役立つはずです。

于 2011-02-26T00:26:31.187 に答える