繁体   English   中英

如何在 Xcode、Swift 中拖放枚举?

[英]How to drag and drop an enum in Xcode, Swift?

我有一个简单的enum作为两个UICollectionView的数据结构:

enum ToolBarItem {
    case inking(PKInkingTool.InkType, UIColor, CGFloat)
    case lasso
    case eraser(PKEraserTool.EraserType)
}

UICollectionView型号都只是:

private(set) var tools = [ToolBarItem]()

我希望能够在两个UICollectionView内部和之间拖放项目,因此我需要以某种方式将其变成一个 dragItem。


我已经阅读了有关将我的enum嵌入到 class 并实现NSItemProviderWritingNSItemProviderReadingCodable以创建项目提供者的信息。 但这非常混乱,我希望有一个更好的解决方案,因为它只是一个enum

我很乐意收到任何帮助或建议。

由于还没有答案,我想与有同样问题的人分享我目前的解决方案:

我创建了一个名为dummyToolItem的 class ,它符合NSItemProviderWritingNSItemProviderReading 这些实现虽然没有功能,但它们不需要,因为它们永远不会被使用。

我现在像这样创建我的UIDragItem

let toolData = toolBarItems.tools[indexPath.item] // this is the ToolBarItem
let dragItem = UIDragItem(itemProvider: NSItemProvider(object: dummyToolItem()))
dragItem.localObject = toolData
return [dragItem]

由于只有我的本地UICollectionView会接受此数据并使用localObject ,因此虚拟实现并不重要,仍可用于识别类型是ToolBarItem

我想有一种更好的方法可以做到这一点,但这个解决方案有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM