[英]SwiftUI - When I create multiplatform app, how to change view in scene?
I am trying to create a multi-platform app from SwiftUI.我正在尝试从 SwiftUI 创建一个多平台应用程序。
Here is my code in in这是我的代码
@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()
}
}
}
when my login did success, I will change SceneManager.shared property, from .landing
to .historyRecord
当我登录成功时,我将更改 SceneManager.shared 属性,从
.landing
到.historyRecord
but the view didn't change, how should I change root view of scene?但视图没有改变,我应该如何改变场景的根视图? Thanks
谢谢
SwiftUI 2.0 introduced StateObject
for such purpose, so go with the following pattern SwiftUI 2.0为此目的引入了
StateObject
,因此请使用以下模式
@StateObject var sceneManager = SceneManager.shared
and make和做
class SceneManager: ObservableObject {
@Published var state: StateTypeHere
}
Make your SceneManager
an ObservableObject
and change the @State
wrapper to @ObservedObject
.使您的
SceneManager
成为ObservableObject
并将@State
包装器更改为@ObservedObject
。
Make sure state
is an @Published
variable.确保
state
是一个@Published
变量。
https://developer.apple.com/documentation/combine/observableobject https://developer.apple.com/documentation/combine/observableobject
Or you can change your @State
to @State var sceneManagerState = SceneManager.shared.state
或者您可以将
@State
更改为@State var sceneManagerState = SceneManager.shared.state
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.