我正在创建一个简单的表单应用程序。在其中,我有复选框和单选按钮,但我不知道如何操作。
我已经做了下面的代码来动态改变所选选项的颜色。但它可以选择多个值。我需要选择5个值中的一个值,就像一个单选按钮。
我正在按第二个单选按钮。现在如果我选择第四个单选按钮,第二个应该取消选择,第四个应该被选中。
struct DCTableCell: View {
@Binding var dcValue: String
@State var isSelected: Bool = false
var body: some View {
Button(action: {
print("Tapped")
self.isSelected.toggle()
}){
ZStack {
RoundedRectangle(cornerRadius: 8)
.stroke(self.isSelected ? Color.init("borderSelected"): Color.init("border"))
.frame(height: 56)
.foregroundColor(.clear)
HStack {
Text(dcValue)
.font(.custom("Montserrat", size: 16))
.fontWeight(.medium)
.foregroundColor(self.isSelected ? Color.init("borderSelected") : .white)
.padding()
Spacer()
ZStack {
Circle()
.stroke(self.isSelected ? Color.init("borderSelected") : Color("circleBorder"))
.frame(width: 18, height: 18)
.padding()
Circle()
.frame(width: 10, height: 10)
.foregroundColor(self.isSelected ? Color.init("borderSelected"): Color.clear)
}
}
}
}
}
}
4条答案
按热度按时间2w3rbyxf1#
看看这个...一个易于使用的SwiftUI RadiobuttonGroup for iOS
你可以这样使用它:
代码如下:
oiopk7p52#
好吧,这不是一个理想的解决方案,但它的工作,并希望打开你的眼睛,以改善你所拥有的。我给予每个RadioButton一个ID,当选定的ID更改它更新:
这里是如何使用它。也许你应该创建一个数组,其中包含id和你想要传入的字符串。
希望这能有所帮助!
q5lcpyga3#
我有一个类似的解决方案,使用标签作为hashable标签,这使得它非常直接。所以你只需要设置外层:
CustomDCPicker
,像一个普通的picker。7lrncoxx4#
这里是另一个产品,它可能比已经提供的其他解决方案更简单。
Binding
结合使用,以获得任何Equatable
值。init
的onState,则按钮的外观为on...否则不是。@ScaledMetric
属性 Package 器实现的。下面是如何使用它: