SwiftUI - 取决于多个条件

标签 swiftui

是否可以在 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")
            }
        }
    }
}

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

关于SwiftUI - 取决于多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079776/

相关文章:

ios - SwiftUI TextField 减半

ios - 如何在 SwiftUI 中为列表创建按字母顺序排列的部分索引?

ios - SwiftUI DatePicker 仅以英文显示月份?

swift - 从iOS的Core Data 14 WidgetKit 中获取数据

ios - swiftui 表单未出现在列表中

ios - SwiftUI 双向绑定(bind)到枚举案例中 ObservableObject 中的值

macos - 使用 SwiftUI 在 macOS 中设置 SidebarView 的宽度

ios - SwiftUI 在 TabView 中禁用特定的 tabItem 选择?

swift - 如何在 SwiftUI 中的 View 之外制作 State 包装器?

从目标 View 返回时,SwiftUI NavigationLink 显示为突出显示