swiftui - 将滑块值保存到数组 SwiftUI
问题描述
struct MyNode : Identifiable {
var id: UUID
var weight: Double
init( weight: Double ) {
self.id = UUID()
self.weight = weight
}
}
struct MyNodeView : View {
@State var myNode : MyNode
var body: some View {
HStack {
Text("\(String(format: "%.f", myNode.weight))%").font(.footnote)
Slider(value: $myNode.weight, in: 0 ... 100)
}
}
}
以上是我创建滑块视图的地方,因此我可以在 ForEach 循环中动态制作滑块。所以我有一组大约 5 个滑块,并且想将所有值保存到一个数组中。所以 [50, 60, 70, 80, 90] 对于每个对象。有没有办法将这些值保存到数组中。
Group {
Text("Other defensive layers").fontWeight(.bold).foregroundColor(lightGray).padding(.vertical).padding(.leading, 30).font(.system(size: 15))
HStack {
VStack {
ForEach(defensiveLayers, id: \.self) { layer in
let node = MyNode(weight: 0)
HStack {
Text(layer).font(.custom("Gill Sans", size: 12)).padding(.trailing).foregroundColor(.gray)
MyNodeView(myNode: node)
}
}
}
}.padding(.horizontal, 30)
}
解决方案
使用模型数组MyNode
并使用@Binding
.
这是演示代码。
struct MyNodeView : View {
@Binding var myNode : MyNode
var body: some View {
HStack {
Text("\(String(format: "%.f", myNode.weight))%").font(.footnote)
Slider(value: $myNode.weight, in: 0 ... 100)
}
}
}
struct SwiftUIDEMO: View {
@State private var defensiveLayers: [MyNode] = (0..<5).map { _ -> MyNode in
MyNode(weight: 0)
}
var body: some View {
VStack {
ForEach(defensiveLayers.indices, id: \.self) { index in
MyNodeView(myNode: $defensiveLayers[index])
}
}
}
}
推荐阅读
- android - Android Studio 3.6.1 的布局编辑器中缺少标记为“设计”和“文本”的选项卡
- python - 我如何从终端启动 youtube 全屏
- python - Keras 转换 和未转化。区别
- java - Java - ByteArrayOutputStream 替换,但仅适用于 1 个值
- javascript - 如何测试更改文件内容的功能(Jest)
- r - 如何从 R 中的数据框中提取每个条目名称的中点位置?
- java - 使用 pdfbox 替换 pdf 中的字符串时获取 /u0000
- python - 如何在python中按顺序对列表进行排序?
- python - 制作数据集以在 Sklearn 中测试 PCA?
- java - Android Studio 我无法在课堂上获得回报。(火库)