4

我已经实现了从 Finder 拖放到我的应用程序到 NSTableView,并创建link了文档等。

但是,我想通过将项目从 NSTableView 拖放到垃圾图标上来进行删除操作。我怎样才能正确地做到这一点?如何启用丢弃到垃圾箱?

4

2 回答 2

7

(我已经很长时间没有这样做了,我是从记忆中做的,然后看一下文档。如果这不起作用,请告诉我,我会仔细检查代码。)

draggingSession:sourceOperationMaskForDraggingContext:你应该包括NSDragOperationDelete作为合法操作之一。然后,您将收到NSDragOperationDelete回信,draggingSession:endedAtPoint:operation:表明该项目已被丢弃在垃圾箱中。

于 2013-01-21T22:34:18.977 回答
1

使用 dropSessionDidEnd 委托方法。在那里您可以获得放置点的位置,并且不需要另一个 UICollectionView/UITableView :

func collectionView(_ collectionView: UICollectionView, dropSessionDidEnd session: UIDropSession) {

  guard let item = session.items.first?.localObject as? YourObject else {
    return
  }
  let dropLocation = session.location(in: self.view)
  let itemDropedInTrash = TrashImageView.frame.contains(dropLocation)
  if itemDropedInTrash {
    //here update your datasource and reload your collectioView/tableView
    //deleteItemFromDataSource(item: item)
    //collectionView.reloadData()

  }
}
于 2019-09-11T12:45:35.567 回答