列表为空时SwiftUI不执行onInsert?

标签 swift swiftui

我在 UI 上有 2 个列表,其中 1 个列表允许用户拖动到另一个列表。我有问题时 “所选产品列表”为空。它不执行 .onInsert 函数。

渲染时数组“selectedProduct”不为空时没有问题。
当其他列表完全为空时,如何允许用户拖放?

List(selection: $selection)
{
     HStack(alignment: .center)
     {
       Spacer().frame(width: 200)
       Text("Product Name")
           .foregroundColor(blue)
           .lineLimit(1)
       Spacer()
       Text("Price")
           .foregroundColor(blue)
       Spacer()
       Text("Unit")
            .foregroundColor(blue)
       Spacer()
      }

   ForEach(selectedProduct, id:\.id)
   {
       rider in
       SelectedProductView()    
   }
   .onInsert(of: ["public.data"])
   {
       self.addProduct(position: $0, itemProviders: $1, top: true)
   }
}

最佳答案

.onInsert 适用于 DynamicViewContent,因此当您的 selectedProduct 为空时没有内容,因此无处可插入。

我认为有两种可能性可以解决这种情况:

1) 实现对 drop on List 的支持,并在 selectedProduct 为空时使其处于事件状态,以便在动态内容中添加第一个元素

2) 实现 stub 产品项(例如,空行显示“放置此处”文本),当它变成空的实际产品时,该产品项被显式添加到 selectedProduct 中,从而使内容不为空以允许标准 .onInsert 为您工作。

关于列表为空时SwiftUI不执行onInsert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61023065/

相关文章:

ios - Swift:IAP updatedTransactions 未在 .Purchased 上调用

ios - 具有异步方法的 SwiftUI ProgressView

ios - 如何告诉 SwiftUI View 绑定(bind)到嵌套的 Observable 对象

xcode - 遵循 Apple 的应用程序图标指南不会为 macOS 应用程序图标提供圆角半径

ios - 我可以使用 Metal 在 GPU 上运行算法吗?

ios - Firebase、Swift : Conflicting nullability specifier on return types, 'nullable' 与现有说明符 'nonnull' 冲突

json - 获取本地目录路径和里面的所有文件名(Swift)

swift - 我正在制作 Swift 框架,但它没有我制作的类

State 变量更改后 SwiftUI View 不会更改

swift - SwiftUI 中的 NavigationBarTitle 文本颜色