我的目标是有条件的按钮样式。但是,.buttonStyle(selected : .bordered : .borderedProminent)
不能使用。
struct DepartureArrivalView: View {
@Binding var value: String
@Binding var selected: Bool
var body: some View {
VStack(spacing: 0) {
Button {
} label: {
Text(value)
.frame(maxWidth: .infinity, alignment: .leading)
.font(.title)
}
.customButtonStyle(selected)
.padding(16)
}
}
}
extension Button {
@ViewBuilder
func customButtonStyle(_ selected: Bool) -> some View {
switch selected {
case true:
self.buttonStyle(.bordered)
case false:
self.buttonStyle(.borderedProminent)
}
}
}
#if DEBUG
struct DepartureArrivalView_Previews: PreviewProvider {
static var previews: some View {
DepartureArrivalView(value: .constant("A"), selected: .constant(true))
}
}
#endif
字符串
1条答案
按热度按时间ego6inou1#
注意
.bordered
和.borderedProminent
不符合ButtonStyle
。符合PrimitiveButtonStyle
。因此,解决这个问题的一种方法是引入一个
PrimitiveButtonStyle
,它 Package 了你想要选择的两种样式。要以一种通用的、可重用的方式来实现,请使其通用于两种样式:字符串
然后像这样使用它:
型