SwiftUI - 取决于多个条件

geo*_*gij 5 swiftui

SwiftUI 中是否可以依赖多个条件?例如显示一个工作表:

.sheet(isPresented: $stateA && $stateB, content: { ... }) // this is not working
Run Code Online (Sandbox Code Playgroud)

或者已知有不同的方法?

use*_*734 2

不,这是不可能的!isPresented 接受绑定,这意味着如果工作表将被解除,则状态会更新。stateA、stateB 中的哪一个必须改变?或者他们两个?即使有人会尝试定义 && 运算符,其中左侧和右侧是绑定,但这是一个非常糟糕的主意。不要尝试这样做!

将逻辑移动到您的模型中,最好在任何 View 之外

更新(对于阿斯佩里)

这是有效的代码(带有您的扩展名)

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")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试一下!按 T​​estIt 将打开该工作表。没有“返回”按钮,但您可以使用众所周知的手势将其关闭。并尝试再次按 TestIt ...