小编Adr*_*ano的帖子

如何从类(-extension)写入 SwiftUI 环境对象

鉴于以下设置:

环境变量 UserState

class UserState: ObservableObject {
    @Published var loggedIn = Auth.auth().currentUser != nil
}
Run Code Online (Sandbox Code Playgroud)

UserState 作为变量 SceneDelegate

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
   ...

   //creating the variable
   var userState = UserState()

   func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
       window.rootViewController = UIHostingController(rootView: ContentView().environmentObject(userState))
   }

   ...
}
Run Code Online (Sandbox Code Playgroud)

我现在可以通过声明在 SwiftUI 视图中完美地读/写这个变量

struct ProfileTab: View {
    @EnvironmentObject var userState: UserState
    var body: some View {
        // here I could easily read/write to userState
    }
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。但是:在 SwiftUI 视图之外写入这个变量的正确方法是什么?例如,来自类或类扩展。

例子

extension …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

11
推荐指数
1
解决办法
4266
查看次数

标签 统计

ios ×1

swift ×1

swiftui ×1