2016-07-31 22 views
1

我想为用户选择的行(或多行)向我的NSTableView添加复制(Command + C)功能。根据我读到的内容,如果您在TableView控制器Delegate中执行复制,菜单项中的复制功能应自动激活。复制NSTableView行灰显

我试过在NST​​ableViewController增加(在表视图的委托和数据源),没有运气下面的东西,复制菜单项仍然是灰色的:

  1. 覆盖FUNC副本( ) - > AnyObject { 打印( “TEST:copytriggered”)/ 这里我复制到剪贴板所选行/ 返回真 }

2. 符合到N扫描,执行copyWithZone ...

3. 在窗口控制器和应用程序委托中尝试1和2。

  1. 添加func tableView(_ tableView:NSTableView, pasteboardWriterForRow row:Int) - > NSPasteboardWriting?在TableView数据源中。

我不知道该怎么做在这一点上,任何帮助表示赞赏。

感谢,

马克

回答

0

就得到了答案,在这里发布以供将来参考。

您将复制编辑操作方法与复制对象的方法相混淆。 NSCopying协议和copyWithZone()方法适用于后者,使对象能够创建自己的副本。同样,copy()方法只是copyWithZone()方便的封面方法。

复制编辑菜单项的操作方法略有不同。这是“func copy(_ sender:AnyObject?)”。这是所有操作方法的一般形式,采用发件人参数并且不返回任何内容。您需要实现该方法。

最后,当用户拖动一行时,tableView(_:pasteboardWriterForRow :)通常只用于拖放操作。