ビューベースのテーブルビューを使用する状況があり、データソースとテーブルビューの間でバインディングを使用したくない場合があります。これは主に私のNSTableCellViewが複数のサブビュー、複雑なバリデーション、および他のオブジェクトのメソッドへのトリガされた呼び出しを持つことができるためです。対象のNSTableViewベースのアクションデータソースの更新
我々が持つデータソースとNSTableViewを更新する非常に明確なパスがあります。しかし、後方のために、それはNSTableViewにアップデートしてデータソースを更新している私たちは、セルベースのテーブルビューのための私たちが持っている一種の何もない
tableView:viewForTableColumn:row:
を:
tableView:setObjectValue:forTableColumn:row:
ターゲットアクションパターンが代わりに使用されます。だから、私は基本的に2つの質問している:私は1つの特定のビュー、またはそのサブビューのためのターゲットとアクションを設定した場合
- 、どのように私は、データソースに更新するかを知るために、適切な行と列の情報を得るのですか?
クリックしてNSTableViewから列をクリックすると、1つのサブビューオブジェクトを編集または変更したにもかかわらず、トリックを行う必要がありますか?動作パラメータとして、例えばNSTextFieldために通過する場合、私は、行および列について(他のオブジェクトではなく、NSTableViewインスタンスとして)対象に通知することができる方法
- ?
(これら2つのプロパティが最初の質問に対する適切な答えであれば)私は基本的にサブビューツリーをclickedColumnとclickedRowに来ることができますが、私は、このようにかなり多くの非エレガントな解決策を見つけると勘より良い方法があるがあります。事前に...
感謝....
はい、私はNSTableCellViewをサブクラス化する意図があります。私のアクションメソッドは他のいくつかのクラスにある可能性が高いです。だから、[[[(NSTableCellView *)[sender superview] objectValue] superview] clickedRow]のようなものは、クリックされた行の行位置を与えることができますか? – mbpro
それはうまくいくはずです。それをよりきれいにするには、行番号と列番号のカスタムセルプロパティを与え、 'tableView:viewForTableColumn:row:'に値を設定します。 – paulmelnikow
これはすばらしいアイデアです!ありがとう@ NOA! – mbpro