Чтобы отобразить контекстное меню на щелчок правой кнопкой на NSOutlineView вы должны подкласс и переопределить: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];
}
Так что правильный способ получить делегат для создания меню здесь и обрабатывать действия меню?
EDIT - поэтому подкласс не знает, как создать меню, поэтому я просто сделал это. Это нормально? Я просто не видел кода примера, как общаться с делегатом в Интернете.
return [[self delegate] createMenuForItem:item];
И, очевидно, определен метод, который передал мне делегат NSMenu.
Итак, теперь у меня есть класс обзора, правильно установленный в IB для моего нового подкласса. Однако проблема заключается в том, что этот новый подкласс не знает, как создать меню. Я только создал его, потому что я вынужден показать меню. Я редактирую вопрос, что я имею в виду. – Mark
В дополнение к 'NSRightMouseDown' вы также хотели бы искать' NSLeftMouseDown' с флагом-модификатором 'NSControlKeyMask' ... – NSGod
Конечно - меню может прибывать из любого места. Это может даже произойти от супер и быть измененным, прежде чем передать его обратно. –