如何允许我的NSTableView委托/数据源处理复制/粘贴/等

时间:2013-02-09 05:55:28

标签: objective-c nstableview nspasteboard

我有一个NSTableView,我希望能够突出显示一行或多行,然后点击delete键将其删除,或点击Cmd+C复制它们到了粘贴板。

我发现了一个建议,即继承NSTableView,然后为

编写方法

-(void)copy:(id)sender

文档说很少需要继承NSTableView。而是使用dataSource或delegate,或子类化子组件。委托和dataSource协议不处理菜单命令或键盘快捷方式。如果我尝试继承子类,我遇到一个问题,其中子类需要向委托发送消息,但我的自定义方法不是协议的一部分,所以编译器抱怨。我宁愿知道解决这个问题的“正确”方法,而不是打击设计模式。

1 个答案:

答案 0 :(得分:1)

我通过将NSTableView的父窗口委托声明为NSTableView的控制器(也是dataSourcedelegate)解决了我的问题。现在它接收菜单操作作为响应者链的一部分。