обновление переменной @State в swiftUI не приводит к перезагрузке при использовании делегата, который вызывается извне

У меня есть этот код:

      import SwiftUI

@main
struct MyWatchApp: App {
    
    @State var myEnum: MyEnum = .first

    var body: some Scene {
        WindowGroup {
            getCorrectView()
        }
    }

    func getCorrectView() -> some View {
        DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
            self.update(.second) // this works
        }

        switch myEnum {
            case .first: return AnyView(Text("First"))
            case .second: return AnyView(Text("Second"))
        }
    }
}
extension MyWatchApp: MyDelegate {
    func update(_ newState: MyEnum) {
        // when this func calls from outside, this print called but view not reloads
        // when this func calls from my getCorrectView, works as expected
        print("state updated")
        myEnum = newState
    }
}

Моя проблема заключается в том, что вызов функции «обновления» из другого класса, метода calles, даже вызова print(), но просмотр не перезагружается, например, когда эта функция вызывается из этого файла.

0 ответов

Другие вопросы по тегам