【发布时间】:2020-10-12 14:27:31
【问题描述】:
我正在尝试使用新的 SwiftUI 重新创建我的 Onboarding 设置的旧版本,当我尝试共享状态以使视图发生变化时,它根本不知道发生了什么变化,这就是我我在做:
在主 .swift 结构 (不是 ContentView.swift) 我这样定义页面:
@main
struct AnotherAPP: App {
@ObservedObject var onBoardingUserDefaults = OnBoardingUserDefaults()
let persistenceController = PersistenceController.shared
var body: some Scene {
WindowGroup {
// Onboarding screen
if (onBoardingUserDefaults.isOnBoardingDone == false) {
OnboardingPageView()
} else {
UserLoginView()
}
}
}
}
因此,当我单击按钮进入登录页面时,在 onBoarding 页面上,它会存储它,但实际上并没有刷新视图。那里(在 OnboardingPageView.swift 中)我这样称呼 UserDefaults:
@ObservedObject private var onBoardingUserDefaults = OnBoardingUserDefaults()
在按钮上,我将其更改为:
self.onBoardingUserDefaults.isOnBoardingDone = true
UserDefaults.standard.synchronize()
那么发生了什么?
我知道,例如,如果我在 @main 上创建一个 @State 并将其绑定到 OnboardingPageView 它就可以工作,只要我点击那个按钮,它就会把我带到那里。
【问题讨论】:
-
你能把你
OnBoardingUserDefaults类的内容贴出来吗?