【发布时间】:2023-03-25 23:59:01
【问题描述】:
我有一个类型的数据模型:
struct fruit: Identifiable{
var id = UUID()
var a: String
var b: String
var isActive: Bool
}
还有一个数组:
let fruitData=[
Model(a:"appleImg", b:"Apple", isActive: true),
Model(a:"pearImg", b:"Pear", isActive: false),
Model(a:"bananaImg", b:"Banana", isActive: false),
]
有一个如下所示的 RowView:
struct RowView{
var a = "appleImg"
var b = "Apple"
var isActive = true
var body: some View{
HStack(spacing:8){
Image(a)
Text(b)
Spacer()
}
}
}
然后,我创建了一个视图以在其中使用 ModelArray 并将其循环到主视图的 ForEach 中。所以像:
let fruits = fruitData
ForEach(fruits){fruitPiece in
RowView(a:fruitPiece.a, b:fruitPiece.b, isActive:
fruitPiece.isActive)
}
我想根据用户点击所选行来更改isActive - 诀窍是它应该是一个选择,因此一次只有一个活动状态。对 SwiftUI 来说还是新手,因此非常感谢您的帮助:)
【问题讨论】:
-
有什么问题?您找不到
index吗?你不能改变数组的元素?属性是恒定的?运行时错误或构建时间?要不然是啥?这里出现了很多问题。 -
老实说,您的问题含糊不清——至少就实际问题而言。那么我们把
SwiftUI去掉怎么样。您的模型有一个良好的开端。还有一个(非常)好的例子,其中......我们称它为第一个元素是唯一一个活跃的元素。 (我建议更改您的示例,使每个元素在UUID之外都是唯一的。请记住,这只是一个示例。)现在假设您希望数组中的第三个元素为isActive = true。你会怎么做? (提示,这是基本的编码,不管是什么语言。)问题是,你没有表现出来。 (续...) -
如果您可以在您的代码中向我们展示这一点,那么我们可以缩小范围。现在您有...
List(请注意,我们中的一些人仍然在 SwiftUI 中使用UITableViews)并希望用户点击第三个元素并...在您的模型中使用您的函数,这可能是 @987654334 @? (提示,现在使用的是 Swift、SwiftUI 和 Combine。)您在查找正在点击的单元格/行时遇到问题吗?或者转换该行以找到UUID,这可能不是可见视图的一部分。长 cmets 短 - 这一切中哪一个是你的问题?
标签: list select foreach swiftui