#swiftui
#swiftui
Вопрос:
Мне нужно отобразить 3 кнопки подряд с цветом границы кнопки по умолчанию (скажем, зеленым). И в зависимости от того, какая кнопка из трех нажата, мне нужно изменить цвет ее границы (на красный), чтобы выделить эту кнопку. SwiftUI не позволяет передавать объект кнопки (self) в обработчике действий (например, «отправитель» в Swift). Есть ли способ переключить границу всех трех кнопок, в зависимости от того, какая из них выбрана?
HStack {
Button(action: {
border(Color.red, width: 1) // This doesn't work
}
, label: {
Text("Option 1")
}).border(Color.green, width: 1)
Button(action: {
border(Color.red, width: 1)
}
, label: {
Text("Option 2")
}).border(Color.green, width: 1)
Button(action: {
border(Color.red, width: 1)
}
, label: {
Text("Option 3")
}).border(Color.green, width: 1)
}
Ответ №1:
Решение должно выглядеть примерно так:
@State var selectedButton: Int = 1
var body: some View {
HStack {
Button(action: {
selectedButton = 1
}
, label: {
Text("Option 2")
})
.border(selectedButton == 1 ? Color.red : Color.green, width: 1)
Button(action: {
selectedButton = 2
}
, label: {
Text("Option 2")
})
.border(selectedButton == 2 ? Color.red : Color.green, width: 1)
Button(action: {
selectedButton = 3
}
, label: {
Text("Option 3")
})
.border(selectedButton == 3 ? Color.red : Color.green, width: 1)
}
}