【发布时间】:2021-07-29 07:15:29
【问题描述】:
这似乎是一个奇怪的问题,但我环顾四周,似乎找不到答案。
我想在未绑定到任何变量的视图中创建切换。想象一下可以切换但实际上不执行任何操作的切换开关列表。
我已经尝试过使用 .constant butt 正如你所期望的那样,这不允许我切换开关。显然将其留空会引发错误。
//Can't be changed
Toggle(isOn: .constant(true)) {
Text("Checkbox")
}
//Throws an error
Toggle() {
Text("Checkbox")
}
是否可以在 isOn: 参数中传递任何内容来实现这一点?
编辑:
理论上,我可以在我的视图中有一个@State 变量并绑定到切换开关,并且在我的视图中的其他任何地方都没有使用该变量。唯一的问题是,我事先不知道我的视图中会显示多少个切换,所以我不能只声明一堆 @State 变量。如果我也只创建一个 @State 变量并将其对我的所有切换视而不见,它们都会同步,这不是我想要的,我希望它们都是独立的。
下面是我的视图布局的简化示例
private var array: [String]
var body: some View {
ForEach((0..<self.array.count), id: \.self) {
Toggle("Show welcome message", isOn: *binding here*)
}
}
谢谢
【问题讨论】:
-
您只需要在视图中有
@State变量。 -
谢谢你,但也许我没有完全解释我的目标。如果我没记错的话,拥有@State 变量需要我知道我需要多少。就我而言,屏幕上的切换次数是可变的,我提前不知道会有多少。谢谢
-
如果您添加更多代码来演示
Toggles 的某些堆栈或网格,我可以提供答案。您可以只使用[Bool]类型的单个@State。这意味着每一个都可以单独控制,并且可以是任意数量。 -
呃,这是干什么用的?如果是原型设计,可能是
Toggle(isOn: .constant(Bool.random()), label: {?