2014-02-18 64 views
0

我有一個自定義的NSViewController與兩個NSTableViews並排,就像一個拆分視圖設置,其中左側tableView的選擇更改右側tableView的列表。我不知道在這種情況下如何處理NSMenuItem事件。對於例如如果我按下刪除按鈕,如何區分按下刪除按鈕時突出顯示的左側桌面視圖還是右側桌面視圖?我所得到的是使用NSMenuItem作爲發件人調用的delete:選擇器。哪個NSTableView收到NSMenuItem?

回答

1

首先,一些背景:

在可可術語中,「活動的」視圖或控制被稱爲「第一反應者」。例如,當您將文本輸入到文本字段中時,文本字段被認爲是「第一響應者」,因爲它是首先響應鍵盤輸入的對象。 NSTableView還可以接收第一個響應者狀態(您可以使用箭頭鍵控制選定的行)。

你可以向窗口爲它的第一個響應者,像這樣:

// it's not necessarily a sure thing that the first responder is a TableView. 
id myFirstResponder = [_parentWindow firstResponder]; 

if (myFirstResponder == _leftTableView) { 
    // left tableview is selected 
} else if (myFirstResponder == _rightTableView) { 
    // right tableview is selected 
}