gpt4 book ai didi

ios - 如何在Xcode,Swift中拖放枚举?

转载 作者:行者123 更新时间:2023-12-01 21:56:56 25 4
gpt4 key购买 nike

我有一个简单的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嵌入到类中并实现 NSItemProviderWritingNSItemProviderReadingCodable的信息,以创建项目提供者。但这很混乱,我希望有一个更好的解决方案,因为它只是一个 enum

我很高兴收到任何帮助或建议。

最佳答案

既然还没有答案,我想为有相同问题的人分享我当前的解决方案:

我创建了一个名为dummyToolItem的类,该类符合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

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

关于ios - 如何在Xcode,Swift中拖放枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61110575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com