@State private var isOn1 = false
@State private var isOn2 = false
var body: some View {
ScrollView{
Toggle("switch1",isOn:$isOn1)
Toggle("switch2",isOn:$isOn2)
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的。有没有办法让我在激活一个开关时添加一个 if 语句,使所有其他开关都将关闭。或者在激活开关时是否可以更改开关的状态。任何答案都表示感谢,谢谢!
这是一些替代方法,它不需要对所有绑定进行相互依赖的硬编码,而是使用布尔值的共享存储:
struct DemoExclusiveToggles: View {
@State var flags = Array(repeating: false, count: 9)
var body: some View {
ScrollView {
ForEach(flags.indices) { i in
ToggleItem(storage: self.$flags, tag: i, label: "Switch \(i+1)")
.padding(.horizontal)
}
}
}
}
struct ToggleItem: View {
@Binding var storage: [Bool]
var tag: Int
var label: String = ""
var body: some View {
let isOn = Binding (get: { self.storage[self.tag] },
set: { value in
withAnimation {
self.storage = self.storage.enumerated().map { $0.0 == self.tag }
}
})
return Toggle(label, isOn: isOn)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |