我在 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/