In the following code, background color of the ContentView
doesn't change after two seconds.
struct ContentView: View {
@State private var bool: Bool = false
var body: some View {
NavigationStack(root: {
Group(content: {
if bool {
Color.red
} else {
Color.blue
}
})
.onAppear(perform: {
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
print(">>>")
bool = true
})
})
})
}
}
However, when replacing NavigationStack(root: {
with NavigationView(content: {
, the problem disappears.
Is anyone facing the same problem, or am I doing something wrong? I am using XCode 14.0
beta 2 (14A5229c
), and running it on iOS 16.0
(20A5303i
). Issue happens on both, simulator and physical device.
Who knows... may be it is intentional may be it is a bug, submit feedback to Apple.
Meanwhile here is a workaround, tested with Xcode 14 / iOS 16
NavigationStack {
if bool {
Color.red
} else {
Color.blue
}
}
.id(bool) // << here !!
*BTW, Group
is not needed anymore in such cases.