3

在 SwiftUI 中使用 SceneDelegate 时,可以创建如下所示的函数,用于设置视图,如下所示。但是,在最新版本中,我们现在使用 WindowsGroup。是否可以编写一个函数来更改 WindowsGroup 中的视图?

func toContentView() {
   let contentView = ContentView()
      window?.rootViewController = UIHostingController(rootView: contentView)
}
4

1 回答 1

2

这是可能的替代方法,实际上与您的旧方法相同toContentView

  1. 助手类
class Resetter: ObservableObject {
    static let shared = Resetter()

    @Published private(set) var contentID = UUID()

    func toContentView() {
        contentID = UUID()
    }
}
  1. @main 的内容
    @StateObject var resetter = Resetter.shared
    var body: some Scene {
        WindowGroup {
            ContentView()
               .id(resetter.contentID)
        }
    }
  1. 现在从代码中的任何地方重置为ContentView您都可以调用
Resetter.shared.toContentView()
于 2020-10-01T19:23:41.650 回答