NSOutlineView の右クリックでコンテキスト メニューを表示するには、サブクラス化してオーバーライドする必要があります。
- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
NSPoint pt = [self convertPoint:[theEvent locationInWindow] fromView:nil];
id item = [self itemAtRow: [self rowAtPoint:pt]];
// Only the delegate knows how to create a menu based on the item
return [self createMenuFor: item];
}
では、デリゲートにここでメニューを作成させ、メニュー アクションを処理させる適切な方法は何でしょうか?
編集 - サブクラスはメニューの作成方法を知らないので、これを行いました。大丈夫ですか?デリゲートとオンラインで通信する方法のサンプルコードは見当たりませんでした。
return [[self delegate] createMenuForItem:item];
そして明らかに、NSMenu を返すメソッドをアウトライン ビュー デリゲートで定義しました。