質問

私は私のエンティティ上の1つの関係を持つコアデータストアで初めてバインディングを使用しています、私はイメージとタイトルを示すnScollectionViewを使ってサブアイテムを表示します。

オブジェクトは次のとおりです。

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)
.

コントロールは次のとおりです。

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField
.

Model Key.ImagePathとValue Transformerとして、Model Key Pathを使用してNsimageViewをコレクションビューアイテムにバインドしました。これはすべてうまく機能します。

コード内の項目をダブルクリックして、ダブルクリックしたアイテムの表現オブジェクトにアクセスすることを検出したいのです。

私はNSIMageViewをサブクラス化しようとしました。私はこれを正しい方法で行う方法がわかりません。

助けてくれてありがとうございました、私はこれが基本的なものであることを理解しています、そして私はバインディングの実装に不正確なことをしている必要があります。

役に立ちましたか?

解決

コレクションビューアイテムのサブクラスを実装し、CustomCollectionViewItemを指定して、IBのコレクションビュー項目のクラスを変更します。

サブクラスNSIMageViewも、このクラスでダブルクリックを処理します。弱い参照デリゲートオブジェクトを作成し、このデリゲートをIBのCustomCollectionViewItemにバインドします。

今すぐダブルクリックすると、CustomCollectionViewItemとCustomCollectionViewItemのメソッドを呼び出して、代表オブジェクトにアクセスできます。

今、問題はこれを実際のコントローラクラスに渡す方法です。CustomCollectionViewItemに弱い参照デリゲートを作成し、このデリゲートをIBのメインコントローラクラスにバインドする必要があります。

そのため、CustomCollectionViewItemがNSimageViewサブクラスから呼び出しを受け取ると、メインコントローラクラスメソッドを呼び出して、表現オブジェクトを渡します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top