我的简单 UIHostingController 代码给出了
致命错误:对类“SwiftUI.UIHostingController”错误使用未实现的初始化程序“init(nibName:bundle:)”。
import UIKit
import SwiftUI
struct SwiftUIView: View {
var body: some View {
ZStack {
Text("annen")
.font(.headline)
.fontWeight(.bold)
}
}
}
class SwiftUIViewController: UIHostingController<SwiftUIView> {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder, rootView: SwiftUIView())
}
}
这是我的扩展。在 SceneDelegate 中,它
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
let mainView = HomeView(vm: HomeView.VM(state: self.state)).environmentObject(self.state)
window.rootViewController = UIHostingController(rootView: mainView)
self.window = window
window.makeKeyAndVisible()
}
除了这段代码之外,我没有任何其他 UIHostingController 的用法,这是一个错误还是我的错误?
您需要重写 UIHostingController 的指定初始值设定项并使用根视图调用 super.init(rootView:) 。
class SwiftUIViewController: UIHostingController<SwiftUIView> {
init() {
super.init(rootView: SwiftUIView())
}
@objc required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}