Change to @Published var in @EnvironmentObject not reflected immediately

A couple of things.

  • Your setup doesn’t work if you move the Button into MasterView either.
  • You don’t have a import Combine in your code (don’t worry, that alone doesn’t help).

Here’s the fix. I don’t know if this is a bug, or just poor documentation – IIRC it states that objectWillChange is implicit.

Along with adding import Combine to your code, change your UserData to this:

final class UserData: NSObject, ObservableObject  {
    var objectWillChange = PassthroughSubject<Void, Never>()
    @Published var changeView: Bool = false {
        willSet {
            objectWillChange.send()
        }
    }
}

I tested things and it works.

Leave a Comment