Как принудительно обновить представление SwiftUI?

У меня есть кнопка с.disabled()условие, которое является вычисляемым свойством моегоObservableObjectмодельный класс. Это значит, что я не успеваю.

Что-то вроде этого:

      class MyModel : ObservableObject {
    var isDisabled: Bool {
        if ... {
            return true
        }
        else {
            return false
        }
    }
}

struct SettingsNewsSubscriptionsView : View {
    @ObservedObject var model: MyModel

    var body: some View {
        ...

        Button("Save") {
            Task {
                // Saves to backend asynchronously, then updates MyModel which changes isDisabled.
            }
        }
        .disabled(model.isDisabled)
    }
}

В какой-то моментfalse. При нажатии кнопки что-то сохраняется асинхронно, после чегоMyModelобновляется, что приведет к тому, чтобы стать .

Потому что это не@Published, кнопка не обновляется один разisDisabledстановитсяtrue.

Как я могу вызвать обновление SwiftUIView, в этом случаеButtonявно изнутриTask?

1 ответ

Вызов

      model.objectWillChange.send()
Другие вопросы по тегам