У меня есть переменная @State Bool с didSet. Я хочу сделать что-то, когда переменная изменится, поэтому я попытался использовать didSet. Проблема в том, что когда я использую функцию .toggle () для переключения состояния bool, didSet не вызывается.
Возьмите этот код, например:
import SwiftUI
struct SwiftUIView: View {
@State var testBool = false {
didSet {
print("set")
}
}
var body: some View {
VStack {
Button(action: {
self.testBool.toggle()
}) {
Text("Toggle with .toggle()")
}
Button(action: {
if self.testBool {
self.testBool = false
} else {
self.testBool = true
}
}) {
Text("Toggle with if")
}
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
Все, что у меня есть, это 2 кнопки: - Одна кнопка переключает состояние bool с помощью функции .toggle (). - Следующая кнопка переключает состояние с помощью basi c if / else
. Верхняя кнопка, использующая функцию .toggle (), не печатает «set» в консоли, как ожидалось, с didSet для переменной. Нижняя кнопка работает как положено.