我想从UIViewController加载一个基于SwiftUI的视图,该视图读取包本地的json。只有swiftUI项目中的代码和绑定才能正常工作,当我利用UIHostingController时,出现错误,我正在寻求帮助来解决。
class ProgramsListVCHost : UIHostingController<ProgramsList>, Storyboarded {
weak var coordinator: MainCoordinator?
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder, rootView: ProgramsList())
}
}
上面的代码崩溃了,因为我没有传递我必须引起模型初始化的内容。
super.init(coder: aDecoder, rootView: ProgramsList().environmentObject(ProgramUserData()))
但是,如果我这样做,编译器要求将整个内容都转换为基础类ProgramList(无法将“ some View”类型的值转换为预期的参数类型“ ProgramsList”)
如果我确实应用了建议的修复程序,则代码崩溃并显示错误:
无法转换类型的值 'SwiftUI.ModifiedContent >>' (0x7fff89d0ec68)到'bikeit.ProgramsList'(0x110477328)。 2019-11-15 14:36:26.049041-0500 bikeit [13658:8386085]无法强制转换为 输入“ SwiftUI.ModifiedContent >>” (0x7fff89d0ec68)到'bikeit.ProgramsList'(0x110477328)。 (lldb)
我不明白如何初始化必须通过的对象才能使其正常工作。
答案 0 :(得分:1)
当然,这是因为声明的内容UIHostingController<ProgramsList>
是ProgramsList
,所以在初始化程序中是期望的,但是您将.environmentObject
的输出传递给了{{1} },因此类型检查失败,并且您得到编译器错误。
目前尚不清楚您的需求,但可能的解决方法如下:
SwiftUI.ModifiedContent