标签: nsitemprovider

如何在 SwiftUI 拖放中传递 NSItemProvider 中的多个字符串

我在 Stack Overflow 上查看了一些有关使用 SwiftUI 进行拖放重新排序的问题,其中这个问题特别有帮助:SwiftUI | 使用 onDrag 和 onDrop 对单个 LazyGrid 中的项目重新排序?

我希望扩展此功能,将某些内容从 SwifUI 应用程序中的一个项目列表拖到另一个项目列表中。假设我有一个Task清单:

//TaskView.swift

ScrollView{
  VStack{
    ForEach(model.tasks, id: \.self){ task in
      Text(task.name)
        .onDrag{
          NSItemProvider(object: String(task.id) as NSString)
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...我还有一个Project列表,我可以将其拖动Task到该列表上以将其移动到该项目:

//ProjectView.swift

ScrollView{
  VStack{
    ForEach(model.projects, id: \.self){ project in
      Text(project.name)
        .onDrop(of: [UTType.text], delegate: ProjectDropDelegate(project: project))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决的部分是我ProjectDropDelegate试图确定几件事:

  1. 什么样的物体落在我身上?(一定是任务)
  2. 如果这是一项任务,那么它是什么id以便我可以对其采取行动?(或者,理想情况下,我可以使用整个Task对象)

我不知道如何让我NSItemProvider使用.onDrag字符串以外的任何东西,并且仍然可以使用我的 SwiftUI 拖/放功能。对于它的价值,我TaskProject对象是核心数据类。 …

swift swiftui nsitemprovider

7
推荐指数
1
解决办法
4678
查看次数

SwiftUI:没有在 DropDelegate 中删除 NSString 值

我正在尝试使用 NSString 实现简单的拖放。我可以使用 NSURL 但不能使用 NSString。每次我尝试拖放时,我总是得到一个零值。这是我的代码:

struct ContentView: View 
{

    var body: some View 
    {
        Text("Hello World")
            .onDrag { NSItemProvider(object: "Hello World" as NSString) }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是掉落的物体:

struct DroppedView: View, DropDelegate
{
    var body: some View 
    {
        Text("Drop here")
            .onDrop(of: ["public.text"], delegate: self)
    }

    func performDrop(info: DropInfo) -> Bool
    {
         if let items = info.itemProviders(for: ["public.text"]).first
         {
             item.loadItem(forTypeIdentifier: "public.text", options: nil)
             {
                 (data, error) in
                
                 print(data)
             }
         }
         return true
    }
}
Run Code Online (Sandbox Code Playgroud)

我本以为输出是“Hello World”。我缺少什么?

drag-and-drop swiftui nsitemprovider

4
推荐指数
1
解决办法
1130
查看次数

标签 统计

nsitemprovider ×2

swiftui ×2

drag-and-drop ×1

swift ×1