Really strange. Not sure of the explanation, but looks like the VStack is not reevaluated when popover is called.
But, if added a Text in the VStack, and it works OK. VStack is reevaluated.
var body: some View {
VStack {
Button("xxxx") {
print("Button")
visableHiddenMenu = true
print("visableHiddenMenu \(visableHiddenMenu)")
visable.toggle()
}
.popover(isPresented: $visable) {
VStack {
let _ = print("visableHiddenMenu2 \(visableHiddenMenu)")
Text("Popover presented \(visableHiddenMenu)")
}
.onAppear {
print("appear \(visableHiddenMenu)")
visableHiddenMenu = visableHiddenMenu
}
}
Text("Popover visible \(visableHiddenMenu)")
}
.padding()
}
In log:
Button
visableHiddenMenu true
visableHiddenMenu2 true
appear true
visableHiddenMenu2 true
Note that visableHiddenMenu2 true appears twice, showing Stack is reevaluated.
PS: what is the purpose of line 19 ?
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: