SwiftUI-取决于多个条件
是否可能依赖于SwiftUI中的多个条件?例如,要显示图纸,请执行以下操作:SwiftUI-取决于多个条件,swiftui,Swiftui,是否可能依赖于SwiftUI中的多个条件?例如,要显示图纸,请执行以下操作: .sheet(isPresented: $stateA && $stateB, content: { ... }) // this is not working 或者已知另一种方法吗?不,不可能!isPresented accept Binding,这意味着如果工作表将被取消,则状态将被更新。州A和州B中的哪一个必须改变?还是两者都有?即使有人试图在左右两侧绑定的位置定义&&运算符,这也是一个非常糟糕
.sheet(isPresented: $stateA && $stateB, content: { ... }) // this is not working
或者已知另一种方法吗?不,不可能!isPresented accept Binding,这意味着如果工作表将被取消,则状态将被更新。州A和州B中的哪一个必须改变?还是两者都有?即使有人试图在左右两侧绑定的位置定义&&运算符,这也是一个非常糟糕的主意。别想这么做 将逻辑移动到您的模型,最好在任何视图之外 更新(针对Asperi) 这是有效代码(带扩展名) 试试看!按TestIt将打开工作表。没有“返回”按钮,但您可以用众所周知的手势将其取消。然后再次尝试按TestIt…“我只能给你看门…”(c)Morpheus 今天是运算符重载的日子:^),下面是您的案例(使用Xcode 11.3+测试)
扩展绑定,其中Value==Bool{
静态函数&(lhs:Binding,rhs:Binding)->Binding{
返回绑定(get:{lhs.wrappedValue&&rhs.wrappedValue},
集合:{uin})
}
}
结构TestCustomBinding:视图{
@状态私有变量isFirst=true
@状态私有变量isSecond=false
var body:一些观点{
VStack{
按钮(“测试”){
self.isSecond=true
}
.工作表(显示:$isFirst&$isSecond){
按钮(“关闭我”){
//工作表必须通过其中一个状态显式关闭!
self.isSecond=false
}
}
}
}
}
可以从变量中获取不同的条件
struct ChangingButton: View {
var text: String
var onButton: String
var offButton: String
var changeButton: Bool
var buttonCondition: String {
if isOn {
return isOnImage
} else {
return isOffImage
}
}
var body: some View {
Button(action: {
action()
}
, label: {
VStack {
Image(systemName: buttonCondition)
Text(text)
}
})
}
}
struct ChangingButton_Previews: PreviewProvider {
static var previews: some View {
ChangingButton(text: "My Button", onButton: "on", offButton: "off", changeButton: true, action: {
}).background(Color.black)
}
.-)你甚至可以定义| |运算符,没有人能阻止你。。。我不想阻止你,但请看我的最新答案
struct ChangingButton: View {
var text: String
var onButton: String
var offButton: String
var changeButton: Bool
var buttonCondition: String {
if isOn {
return isOnImage
} else {
return isOffImage
}
}
var body: some View {
Button(action: {
action()
}
, label: {
VStack {
Image(systemName: buttonCondition)
Text(text)
}
})
}
}
struct ChangingButton_Previews: PreviewProvider {
static var previews: some View {
ChangingButton(text: "My Button", onButton: "on", offButton: "off", changeButton: true, action: {
}).background(Color.black)
}