1

同じコンテキスト メニューを持つ 5 つの NSTableView のインスタンスがあります。メニューがクリックされたというメッセージが表示されたら、それを送信したテーブルを知る必要があります。NSMenu のドキュメントを確認しましたが、メニューを開いたテーブルを確認する方法が見つからないようです..

NSTableView をサブクラス化し、me​​nuForEvent でデリゲートにメッセージを送信することを考えていますが、それが最善の方法でしょうか?

アップデート:

ありがとう Joshua、私は 5 つのテーブルを使用して週 5 日のタスク プランを表示しています。各テーブルは曜日を表し、タスクを追加および削除するためのコンテキスト メニューを追加しました。したがって、ユーザーが平日に「タスクを追加」をクリックすると、どのタスクかを知る必要があります。テーブルビューをサブクラス化し、メニューが開いたときにデリゲートにメッセージを送信することで機能しました。このようにして、コントローラーは、どのテーブルが最後にメニューを呼び出したかを認識します。しかし、これを実現するのに最適な実装とは思えません。問題は UI にあるとおっしゃっていたようですが、どう思いますか? ホセ。

4

1 に答える 1

1

この情報を取得する方法がわかりません。メニューは何にも「添付」されていません。それらは場所に表示されます。あなたの -menuForEvent: オーバーライドは機能するかもしれませんが、それは私にウィリーを与えます。

これはあなたの質問に対する答えではありませんが、私の最初の反応は「まったく同じメニューのテーブルが複数あるのはなぜですか?」ということです。これは、UIの問題として私をより驚かせます。コンテキスト メニューは、それが表す特定の種類のもの (またはそのビュー) にかなり固有のものであると考える人もいるでしょう。ここで疑問が生じます。まったく同じコンテキストを持つ 5 つのテーブル ビューがあるのはなぜでしょうか。5 つのテーブルすべてが、(おそらく) 同じコントローラーによって同じ方法で制御されるものを表す場合、5 つの個別のテーブルよりも「もののコレクション」を表すより良い方法がある可能性が非常に高くなります。

確かに、私は多くの仮定を立てていますが、私の好奇心は私を最大限に活用していると思います. :-)

于 2010-09-29T20:13:28.760 に答える