NavigationLink
で再描画が波及するのが、 .sheet
だとしないかなと思って試してみましたが、 .sheet
でも波及しますね。( "Navigation" または "Sheet" ボタンを押してから "+" ボタンを押したときに結果がビューに反映される) struct ContentView: View { @ObservedObject var counter: Counter = .shared @State var isSheetPresented: Bool = false var body: some View { NavigationView { VStack { NavigationLink(destination: CounterView(count: counter.count)) { Text("Navigation") } Button("Sheet") { self.isSheetPresented = true } .sheet(isPresented: $isSheetPresented) { CounterView(count: self.counter.count) } } } } } struct CounterView: View { let count: Int var body: some View { VStack { Text("\(Counter.shared.count)") Button("+") { Counter.shared.count += 1 } } } } final class Counter: ObservableObject { @Published var count: Int = 0 static let shared: Counter = .init() }
(edited).sheet
では @EnvironmentObject
は引き継がれないけど再描画は影響する?無関係の二つかもしれないけど、一貫性がないような・・・。