SwiftUI-使用@main设置rootViewController

问题描述

在SwiftUI中使用SceneDelegate时,可以创建类似于以下功能的功能,该功能可用于设置视图as shown here.。但是,在最新版本中,我们现在使用WindowsGroup。是否可以编写一个函数来更改WindowsGroup中的视图?

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

解决方法

以下是与您以前的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()

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...