大佬教程收集整理的这篇文章主要介绍了ios – 拖放 – 从我的模型中创建一个NSItemProvider,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在我的UICollectionViewController中实现拖放.
UICollectionView的数据源是我创建的自定义模型结构的数组.
根据需要,我设置了我的collectionView.dragDelegate = self,通过这样做我已经实现了所需的协议函数itemsForBeginning 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] }@H_489_16@我无法创建dragItem,因为我的模型不符合NSItemProviderWriTing类型.
如果我强制数据源是String类型并将项目强制转换为NSString它可以工作,但不能用我的struct Model.
有谁知道如何解决这个问题?
许多API都期望NSObject的子类,因此你必须使用一个类,
Apple blog: struct vs class
class Model : NSObject,NSItemProviderWriTing { public static var writableTypEIDentifiersForItemProvider: [String] { return [] // something here } public func loadData(withTypEIDentifier typEIDentifier: String,forItemProviderCompletionHandler completionHandler: @escaping (Data?,Error?) -> Swift.Void) -> Progress? { return nil // something here } }@H_489_16@
以上是大佬教程为你收集整理的ios – 拖放 – 从我的模型中创建一个NSItemProvider全部内容,希望文章能够帮你解决ios – 拖放 – 从我的模型中创建一个NSItemProvider所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。