是否可以在 SwiftUI 中依赖多个条件?例如显示一张纸:
.sheet(isPresented: $stateA && $stateB, content: { ... }) // this is not working
还是已知不同的方法?
最佳答案
不,这是不可能的 ! isPresented 接受绑定(bind),这意味着如果工作表将被解除,则状态会更新。 stateA,stateB中的哪一个必须改变?或两者兼而有之?即使有人会尝试定义 && 运算符,其中左侧和右侧是 Binding,但这是非常糟糕的主意。不要试图这样做!
将逻辑移到您的模型中,最好在任何 View 之外 .
更新(针对 Asperi)
这是有效代码(带有您的扩展名)
struct ContentView: View {
@State private var isFirst = true
@State private var isSecond = false
var body: some View {
VStack {
Button("TestIt") {
self.isSecond = true
}
.sheet(isPresented: $isFirst && $isSecond) {
Text("A")
}
}
}
}
尝试一下!按 TestIt 将打开工作表。没有“返回”按钮,但您可以用众所周知的手势将其关闭。并尝试再次按下 TestIt ...
关于SwiftUI - 取决于多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079776/