如何解决SwiftUI-创建多平台应用程序时,如何更改场景视图?
我正在尝试从SwiftUI创建一个多平台应用程序。
这是我的代码在
@main
struct MyApp: App
@State var sceneManager = SceneManager.shared
var body: some Scene {
WindowGroup {
if sceneManager.state == .landing {
LandingPageView()
} else if sceneManager.state == .historyRecord {
HistoryRecordView()
}
}
}
登录成功后,我将把SceneManager.shared属性从.landing
更改为.historyRecord
但是视图没有改变,如何更改场景的根视图? 谢谢
解决方法
将SceneManager
设为ObservableObject
,然后将@State
包装器更改为@ObservedObject
。
确保state
是一个@Published
变量。
https://developer.apple.com/documentation/combine/observableobject
或者您可以将@State
更改为@State var sceneManagerState = SceneManager.shared.state
SwiftUI 2.0 为此目的引入了StateObject
,所以请遵循以下模式
@StateObject var sceneManager = SceneManager.shared
并制作
class SceneManager: ObservableObject {
@Published var state: StateTypeHere
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。