我有一个自定义的NSViewController并排有两个NSTableViews,类似于拆分视图设置,左侧tableView上的选择更改了右侧tableView的列表。在这种情况下,我不确定如何处理NSMenuItem事件。对于例如如果我按下删除按钮,我如何区分按下删除按钮时是左侧工作台视图还是右侧工作台视图?我得到的只是使用NSMenuItem作为发送者调用的delete:选择器。
答案 0 :(得分:2)
首先,一些背景知识:
在Cocoa术语中,“主动”视图或控件被称为“第一响应者”。例如,当您在文本字段中输入文本时,文本字段被视为“第一响应者”,因为它是首先响应键盘输入的对象。 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
}