swift - 列表为空时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)
}
}
解决方案
的.onInsert
作品DynamicViewContent
,所以当你selectedProduct
是空的时没有内容,所以无处插入。
我认为解决这种情况有两种可能性:
1) 实现对下拉列表的支持,并在selectedProduct
为空时使其处于活动状态,以使add
动态内容中的第一个元素成为可能
2)实现存根产品项目(例如,显示“放在这里”文本的空行),当它变成空的真实产品时明确添加selectedProduct
,从而使内容不为空,以便.onInsert
为您提供标准工作。
推荐阅读
- c# - 第三人称角色移动的问题
- javascript - 浏览器同步 webpack 插件不工作
- javascript - 检测是否启用了 webgl 硬件加速
- typescript - 如何使打字稿推断出更具体的类属性类型?
- java - spring cloud config在379:64处抛出Bad Base64输入字符
- php - Laravel 5.5分页响应json返回消息:方法视图不存在状态码500
- node.js - Node.js 安装(Windows 安装程序)在 Windows 10 64 位上过早终止
- neo4j - Neo4j Cypher 手动关系索引、APOC 触发器和数据复制
- python - 你如何在 Python Pandas 中进行分组、排序和限制?(即获得前 10 名)
- c++ - 如何为字符串处理创建流操纵器?