ios - 在 SwiftUI 中运行时创建控件
问题描述
以下代码在运行时每次按下按钮时都会创建新控件,问题是选择器选择设置为相同状态。
如何创建具有不同状态变量的新控件,以便它们可以单独操作?
struct ContentView: View {
@State private var numberOfControlls = 0
@State var selection: String="1"
var body: some View {
VStack {
Button(action: {
self.numberOfControlls += 1
}) {
Text("Tap to add")
}
ForEach(0 ..< numberOfControlls, id: \.self) { _ in
Picker(selection: self.$selection, label:
Text("Picker") {
Text("1").tag(1)
Text("2").tag(2)
}
}
}
}
}
解决方案
如何创建具有不同状态变量的新控件,以便它们可以单独操作?
将控件分离到具有自己状态的独立视图中(或在需要时查看模型)。
这是一个演示:
struct ContentView: View {
@State private var numberOfControlls = 0
var body: some View {
VStack {
Button(action: {
self.numberOfControlls += 1
}) {
Text("Tap to add")
}
ForEach(0 ..< numberOfControlls, id: \.self) { _ in
ControlView()
}
}
}
}
struct ControlView: View {
@State var selection: String="1"
var body: some View {
Picker(selection: self.$selection, label:
Text("Picker")) {
Text("1").tag(1)
Text("2").tag(2)
}
}
}
推荐阅读
- netcdf - 从 xarray 数据集创建 NetCDF 时经纬度错误
- rstudio - Rstudio:运行 R 代码的方法,但前提是之前的代码行成功?
- reactjs - 如何使 Link/NavLink 路径更短
- c++ - 在一个变量中保存两种不同的返回类型
- jenkins-pipeline - 如何将工件从一个仓库复制到另一个仓库
- java - 如何使用 SSHJ 实现 SSH 用户/密码认证
- tensorflow - convert tensorflow model to pb tensorflow
- android - ViewModel 中的 Kotliin Dagger 字段注入引发 Dagger/Binding 异常
- android - 如何删除片段的默认按钮?
- android - React Native 应用程序无法在 android 上编译,可能与 AndroidX 有关