2009-08-07 15 views
0

私はNSTableViewを持っており、selectedCell要素が変更されるたびに何かしたいと思います。いつ選択セルが変更されますか?

だから、私のテーブルビューはにtableViewと呼ばれ、これは私が観察したいものです。私は、キー値監視を使用してみました

[tableView selectedCell] 

を、それが動作していないようでした、または多分私がいましたそれは間違っている。何か案は?

答えて

1

ココア自身のクラスのほとんどのプロパティは、観察できません。プロパティが観察可能な場合、そのプロパティのドキュメントは明示的にそう言います。ドキュメンテーションがプロパティが観測可能であると言っていない場合は、そうではないと仮定します。

さらに、存在しないプロパティは二重には観測できません。 NSTableViewNSOutlineViewのドキュメントには、いずれも "selectedCell"という名前のメソッドはありません。あなたはそれがないと仮定するべきです。

ユーザーがいつ別の行を選択するかを知りたい場合は、テーブルビューの代理人にしてください。返信する場合は、代理人のメッセージを送信します。

+0

selectedCellはNSTableViewから継承NSControlの方法であると思います。カーソルがNSTableViewの新しいセルにあることを通知できる他の方法はありますか? –

+0

ああ、私の間違い。私はいつもテーブルビューにコントロールの性質があることを忘れています。それでも、私は 'selectedCell'がテーブルビュー上で動作するのかどうかはわかりません。ユーザがいつセルを編集しているかを検出するために、そのためのデリゲートメソッドもあります。 –

+0

ちょうどあなたのデータを編集可能にしようとしているのであれば、セルごとのレベルでの作業はそれを行う方法ではありません。データソースであり、 'tableView:setObjectValue:forTableColumn:row:'を実装するか、配列を保持するコントローラにテーブルの列をバインドし、コントローラが編集を許可し、モデルオブジェクトが変更可能であることを確認しますあなたはそれらを別の方法で作った)。 –

-1

NSTableViewは、各列に対して1つのdataCellオブジェクトを使用します。 selectedCellが間違った方法です。 selectedColumnを使用して選択した列を取得し、そのdataCellを求めることができます。

そして:私はあなたがNSTableViewのデリゲートメソッドを探している tableViewSelectionDidChange:tableViewSelectionIsChanging:

関連する問題