我有一个表视图,我想有一个不同的上下文菜单出现时,右键单击一个单元格与右键单击一个区域时,没有单元格。我正在尝试在界面构建器中使用故事板来实现这一点。
如果我附加一个菜单到NSTableView,我可以得到一个上下文菜单出现。然而,如果我附加一个菜单到NSTableCellView,我得到的是NSTableCellView的上下文菜单,而不是我附加到NSTableCellView的菜单。
我知道我可以做到这一切通过代码有一个菜单附加的NSTableView和改变它的内容基于点击单元格,但我相信我应该能够做到这一点通过在视图继承不同的视图附加不同的菜单。
这可以单独在界面构建器中完成吗?
根据Willeke的建议,我将NSTableView子类化,并将以下代码添加到菜单属性中:
- (NSMenu*) menu
{
if (self.clickedRow == -1 || self.clickedColumn == -1) return super.menu;
NSTableCellView *clickedCell = [self viewAtColumn:self.clickedColumn row:self.clickedRow makeIfNecessary:FALSE];
if (clickedCell != nil) return clickedCell.menu;
return self.menu;
}
通过这个实现,我得到了我想要的行为。