【发布时间】:2020-05-18 05:16:50
【问题描述】:
当按下循环中的一个按钮时,它的背景颜色会变为红色,当按下另一个按钮时,它的颜色也会变为红色。但剩下的按钮仍然是红色,不会再次变为蓝色。我怎样才能只将按下的按钮更改为红色,而让其他按钮更改为蓝色?
struct Box: Identifiable {
var id: Int
var title: String
}
struct MainView: View {
let boxes:[Box] = [
Box(id: 0, title: "Home"),
Box(id: 1, title: "Subjects"),
Box(id: 2, title: "attendence"),
Box(id: 3, title: "H.W"),
Box(id: 4, title: "Quizes"),
Box(id: 5, title: "class schedule"),
Box(id: 6, title: "Exam Schedule"),
Box(id: 7, title: "Inbox"),
Box(id: 8, title: "Evalouation"),
]
@Binding var showMenu: Bool
var body: some View{
VStack {
ScrollView(.horizontal,showsIndicators: false){
HStack{
ForEach(boxes, id: \.id) {
box in
BoxView(box: box)
}
}
}
}.padding()
}
}
struct BoxView: View {
@State var selectedBtn: Int = 1
var box: Box
var body: some View{
Button(action: {
self.selectedBtn = self.box.id
}){
Text(box.title)
.foregroundColor(.white)
}
.frame(width: 130, height: 50)
.background(self.selectedBtn == self.box.id ? Color.red : Color.blue)
.cornerRadius(25)
.shadow(radius: 10)
.padding(10)
}
}
【问题讨论】:
标签: swift xcode button foreach swiftui