Change to @Published var in @EnvironmentObject not reflected immediately

前端 未结 3 1327
臣服心动
臣服心动 2020-12-01 21:54

In this specific case, when I try to change an @EnvironmentObject\'s @Published var, I find that the view is not invalidated and updated immediatel

3条回答
  •  孤城傲影
    2020-12-01 22:47

    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()
        @Published var changeView: Bool = false {
            willSet {
                objectWillChange.send()
            }
        }
    }
    

    I tested things and it works.

提交回复
热议问题