问题描述
在SwiftUI中使用SceneDelegate时,可以创建类似于以下功能的功能,该功能可用于设置视图as shown here.。但是,在最新版本中,我们现在使用WindowsGroup。是否可以编写一个函数来更改WindowsGroup中的视图?
func toContentView() {
let contentView = ContentView()
window?.rootViewController = UIHostingController(rootView: contentView)
}
解决方法
以下是与您以前的toContentView
- 助手类
class Resetter: ObservableObject {
static let shared = Resetter()
@Published private(set) var contentID = UUID()
func toContentView() {
contentID = UUID()
}
}
- @main的内容
@StateObject var resetter = Resetter.shared
var body: some Scene {
WindowGroup {
ContentView()
.id(resetter.contentID)
}
}
- 现在可以从代码中的任何地方重置为
ContentView
,您只需致电
Resetter.shared.toContentView()