swift - 如何从 UIDragItem 中检索 UIImage?
问题描述
我有一个包含两个 UICollectionViews 的 UIViewController。我正在将图像从第一个 UIcollectionView 拖放到第二个。到目前为止,我的拖动实现有效,但我无法检索正在拖动的基础数据,在本例中为图像。下面是我的代码。
extension StartGameViewController: UICollectionViewDragDelegate{
func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
print("ITEM DRAGGED INDEX: \(indexPath)")
// objects for drag and drop must support the NSItemProviderWriting protocol
// Conforming type : https://developer.apple.com/documentation/foundation/nsitemproviderwriting
var arrayDragitem = [UIDragItem]()
guard let arrayData = self.puzzlePieces else{ return []}
let puzzlePiece = arrayData[indexPath.row]
let image = puzzlePiece.image
let itemProvider = NSItemProvider.init(object: image) // UIImage conforms to NSItemProviderWriting
let dragItem = UIDragItem.init(itemProvider: itemProvider)
arrayDragitem.append(dragItem)
return arrayDragitem
}
}
extension StartGameViewController: UICollectionViewDropDelegate{
// Required - Tells your delegate to incorporate the drop data into the collection view.
func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) {
let destinationIndex = coordinator.destinationIndexPath
let dropItems = coordinator.items
let dragItem = dropItems[0].dragItem
guard let image = dragItem.localObject as? UIImage else{
print("data retrieval error")
return
}
print("image.size: \(image.size)")
}
解决方案
推荐阅读
- c - 为什么我的二维 int segfault 数组带有 malloc?
- sql - SQL Server:查找重复项并为每个打印两行
- php - 联系我们表格:邮件未收到
- swift - ARKit – 在不可见平面下渲染 3D 对象
- sql - 索引没有被使用
- machine-learning - 使用 keras 进行手写数字识别
- c# - 为同一端点使用任何类型的内容类型
- django - django-channels:通过通道连接进行身份验证
- laravel - Laravel:一个简单的 MVC 示例
- python - Python-igraph community_infomap 方法每次给出不同的聚类结果