0
要顯示上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];
}
那麼,什麼是正確的方式來獲得委託創建這裏的菜單和處理菜單操作?
編輯 - 所以子類不知道如何創建菜單,所以我只是這樣做。可以嗎?我只是沒有看到如何在線與代表進行溝通的示例代碼。
return [[self delegate] createMenuForItem:item];
明顯地在我的大綱視圖委託中定義了一個方法來返回一個NSMenu。
好吧,現在我已經在IB中正確設置了大綱視圖類到我的新子類。但問題是這個新的子類不知道如何創建菜單。我只創建它,因爲我被迫爲了顯示一個菜單。我正在用我的意思編輯這個問題。 – Mark
除了'NSRightMouseDown'之外,您還需要使用'NSControlKeyMask'修飾符標誌來查找'NSLeftMouseDown' ... – NSGod
當然 - 菜單可以來自任何地方。它甚至可以來自超級,並在交還之前進行修改。 –