1

NSCollectionViewItem のビューにボタンを事前に追加すると、そのアクションをインスペクターにバインドできます。

ここに画像の説明を入力

これは問題なく動作します。

ビューの 内でそのボタンをプログラムで作成したいのですが、インスペクターの「バインド先: コレクション ビュー アイテム」と同じ結果を得るにはmouseDown:、オプションに何を割り当てればよいでしょうか?bind:

コードは次のとおりです:(Swift)

aButton!.bind(
    "argument",
    toObject: ???, // <- what should I set here?
    withKeyPath: "representedObject",
    options: options
)

編集: NSCollectionViewをサブクラスし、オーバーライドnewItemForRepresentedObject:して、presentedObject をサブクラス ビューに割り当てることで、それを行うことができました。

NSCollectionViewをサブクラス化せずに方法があるかどうかを知りたいです。

4

1 に答える 1

1

NSCollectionViewItemボタンが子孫であるビューを所有するインスタンスにバインドする必要があります。

どのコンテキストからボタンを作成してバインドしようとしていますか? これはコレクションビューのコントローラーですか? それとも、コレクション ビュー アイテム自体 (コレクション ビュー アイテム ビューのコントローラー) にありますか? または、カスタム ビュー クラスにあるのかもしれませんが、それは少し奇妙です。

コレクション ビューのコントローラから-itemAtIndex:、関連するコレクション ビュー アイテムを取得するために使用できます。

コレクション ビュー アイテムからは、self. ただし、この場合、バインディングはあまり役に立ちません。ボタンのtargetandを設定し、アクション メソッドでaction何かを行うこともできます。representedObject

ビューからこれを行う場合は、コレクション ビュー アイテムへの参照を取得する方法が必要です。NIB のコレクション ビュー アイテムに接続するビューに弱いアウトレットを追加する必要があります。次に、そのアウトレットを使用して、その呼び出しのコレクション ビュー アイテムを取得しbind()ます。

于 2015-06-05T08:17:41.037 に答える