【发布时间】:2018-07-02 19:40:01
【问题描述】:
让我们分部分进行吧!
我正在尝试在我的UICollectionViewController 中实现Drag and Drop。
UICollectionView 的数据源是我创建的自定义 Model Struct 的 array。
根据需要我设置了我的collectionView.dragDelegate = self,并通过这样做我实现了required protocol functionitemsForBeginning session: UIDragSession...
这是我的问题开始的地方:
struct Model {
// some variables
// Some initializations
}
var myModelDatasource: [Model] = [model1, model2, model3, ...] // it's a simple case example
func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
let item = myModelDatasource[indexPath.row]
let itemProvider = NSItemProvider(object: item)
let dragItem = UIDragItem(itemProvider: itemProvider) // <-- ERROR HERE, Even If i force cast as NSItemProviderWriting
dragItem.localObject = item
return [dragItem]
}
我无法创建dragItem,因为我的模型不符合NSItemProviderWriting 类型。
如果我强制数据源为 String 类型并将项目转换为 NSString 它可以工作,但不适用于我的 struct Model。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: ios swift drag-and-drop uidragitem