gpt4 book ai didi

button - 如果 SwiftUI 中的条件为真,如何在按钮样式之间切换?

转载 作者:行者123 更新时间:2023-12-04 13:36:04 25 4
gpt4 key购买 nike

我有 2 个自定义按钮样式,我想在点击按钮时更改样式。我试过这种方式:

Button(action: {
self.pressed.toggle()
})
{
Text("Button")
}.buttonStyle(pressed ? style1() : style2())

但它不起作用,它给我一个来自它所属的 VStack 的错误:
Unable to infer complex closure return type; add explicit type to disambiguate

如果我做这样的事情:
.buttonStyle(style1())

或者
.buttonStyle(style2())

然后错误消失了,所以它不是来自 style1() 或 style2()。

最佳答案

您可以创建一个有用的扩展,如下所示

extension View {

func conditionalModifier<M1: ViewModifier, M2: ViewModifier>
(on condition: Bool, trueCase: M1, falseCase: M2) -> some View {
Group {
if condition {
self.modifier(trueCase)
} else {
self.modifier(falseCase)
}
}
}

func conditionalModifier<M: ViewModifier>
(on condition: Bool, trueCase: M) -> some View {
Group {
if condition {
self.modifier(trueCase)
}
}
}

}

用法;

@State var condition = false
var body: some View {
Text("conditional modifier")
// Apply style if condition is true, otherwise do nothing
.conditionalModifier(on: condition, trueCase: Style1())

// Decision between 2 style
.conditionalModifier(on: condition, trueCase: Style1(), falseCase: Style2())
}

关于button - 如果 SwiftUI 中的条件为真,如何在按钮样式之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62008967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com