ios - SwiftUI - 创建多平台应用程序时,如何更改场景中的 View ?

标签 ios swift xcode swiftui multiplatform

我正在尝试从 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

但是 View 没有改变,我应该如何改变场景的 Root View ? 谢谢

最佳答案

SwiftUI 2.0 为此目的引入了 StateObject,因此请使用以下模式

@StateObject var sceneManager = SceneManager.shared

制作

class SceneManager: ObservableObject {
   @Published var state: StateTypeHere
}

关于ios - SwiftUI - 创建多平台应用程序时,如何更改场景中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63691287/

相关文章:

ios - 对多个 Xcode 目标使用相同的版本号 Info.plist

ios - 删除 UITableViewCell 引发异常

swift - case 在 if-case 中是如何工作的

swift - XCUITest 到后台应用程序返回错误的 XCUIApplication.State

php - 无法读取数据,因为它的格式不正确 Xcode 11

iphone - 在 iOS 中暂停时启动 locationManager

ios - willSelectRowAtIndexPath 和 prepareForSegue 之间会发生什么?需要调试建议

iphone - iOS 发布超链接

ios - 从中心点调整 UIImageView 的大小

ios - 为什么在通过消息共享内容时,文本撰写中缺少取消按钮?