1

1NSTableViewつ以上の行を強調表示してから、deleteキーを押してそれらを削除したり、⌘</kbd>+C to copy them to the pasteboard.

NSTableView をサブクラス化し、メソッドをコード化するという提案を見つけました

-(void)copy:(id)sender

ドキュメントによると、サブクラス化NSTableViewはめったに必要ではありません。代わりに、dataSource またはデリゲートを使用するか、サブコンポーネントをサブクラス化してください。デリゲート プロトコルと dataSource プロトコルは、メニュー コマンドやキーボード ショートカットを処理しません。とにかくサブクラス化しようとすると、サブクラスがデリゲートにメッセージを送信する必要があるという問題に遭遇しますが、カスタム メソッドはプロトコルの一部ではないため、コンパイラは文句を言います。設計パターンと戦うよりも、この問題に対する「正しい」アプローチが何であるかを知りたいです。

4

1 に答える 1

1

NSTableViewの親ウィンドウのデリゲートをNSTableViewのコントローラーとして宣言することで問題を解決しました(これは および でもdataSourceありますdelegate)。これで、レスポンダー チェーンの一部としてメニュー アクションを受け取ります。

于 2013-02-09T19:11:52.303 に答える