首页 > 解决方案 > 列表为空时SwiftUI不执行onInsert?

问题描述

我在 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)
   }
}

标签: swiftswiftui

解决方案


.onInsert作品DynamicViewContent,所以当你selectedProduct是空的时没有内容,所以无处插入。

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

1) 实现对下拉列表的支持,并在selectedProduct为空时使其处于活动状态,以使add动态内容中的第一个元素成为可能

2)实现存根产品项目(例如,显示“放在这里”文本的空行),当它变成空的真实产品时明确添加selectedProduct,从而使内容不为空,以便.onInsert为您提供标准工作。


推荐阅读