Post

Replies

Boosts

Views

Activity

StateObject unexpectedly init twice
Environment (Simulator & Device): iOS 17.5.1 iOS 16.7 iOS 18.0 beta 3 Steps to Reproduce: Build and run On the main screen, tap “First”. Then tap “Second”. Observed Behavior: On iOS 17.5.1, the StateObject attached to DetailView is initialized twice. The expected behavior is that the StateObject should be initialized only once. On iOS 16.7, the StateObject is initialized only once, as expected. On iOS 18.0 beta 3, the StateObject is initialized only once initially. However, if you swipe down to dismiss the DetailView, the StateObject is unexpectedly initialized again. Expected Behavior: The StateObject should be initialized only once, and should not be reinitialized when dismissing the DetailView. Please investigate this issue. FB14283951 import SwiftUI class Object: ObservableObject { @Published var flag = false init() { print("object init") } } struct DetailView: View { @StateObject var object = Object() var body: some View { Text("\(object.flag)") } } struct ContentView: View { @State var showingFirst = false @State var showingSecond = false var body: some View { NavigationStack { ZStack { Button("First") { showingFirst = true } .sheet(isPresented: $showingFirst) { NavigationStack { // replace this ZStack with Form, List, issue exists. // remove this ZStack, issue gone. ZStack { Button("Second") { showingSecond = true } .sheet(isPresented: $showingSecond) { DetailView() } } } // 2nd NavigationStack } // 1st sheet } // ZStack } // 1st NavigationStack } // body } // ContentView
1
0
286
Jul ’24