SwiftUI - 使用@main 设置 rootViewController
SwiftUI - Using @main to set the rootViewController
在 SwiftUI 中使用 SceneDelegate 时,可以创建如下所示的函数来设置视图 但是,在最新版本中,我们现在使用 WindowsGroup。是否可以编写一个函数来更改 WindowsGroup 中的视图?
func toContentView() {
let contentView = ContentView()
window?.rootViewController = UIHostingController(rootView: contentView)
}
这是可能的替代方法,实际上与您的旧方法相同 toContentView
- 帮手class
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()
在 SwiftUI 中使用 SceneDelegate 时,可以创建如下所示的函数来设置视图
func toContentView() {
let contentView = ContentView()
window?.rootViewController = UIHostingController(rootView: contentView)
}
这是可能的替代方法,实际上与您的旧方法相同 toContentView
- 帮手class
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()