2016-07-31 71 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 :)通常只用於拖放操作。