ios - 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
但是视图没有改变,我应该如何改变场景的根视图?谢谢
解决方案
为此目的引入了SwiftUI 2.0StateObject
,因此请使用以下模式
@StateObject var sceneManager = SceneManager.shared
和做
class SceneManager: ObservableObject {
@Published var state: StateTypeHere
}
推荐阅读
- java - 在旧版应用程序中使用没有 Spring Boot 的 Netflix Ribbon
- node.js - Firebase 托管部署错误错误:错误:404,未找到请求的实体
- python - 如何从 HttpResponse 获取字符串或渲染到 Python/Django 中的字符串?
- python - 如何导入另一个 tkinter python 类代码以打开新的 tkinter 窗口?
- python - Python初学者:从数组数组中删除nan
- python - 基于键的字典过滤不起作用
- python - Boto3:TypeError:列表索引必须是整数或切片,而不是 str
- oracle-apex - 图片上传没有页面刷新和提交按钮
- mobx - Mobx 只观察数组中的特定对象
- php - Laravel 验证不适用于多字节字符