UIHostingController抛出

时间:2019-11-15 22:56:47

标签: swift swiftui

我想从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)

我不明白如何初始化必须通过的对象才能使其正常工作。

1 个答案:

答案 0 :(得分:1)

当然,这是因为声明的内容UIHostingController<ProgramsList>ProgramsList,所以在初始化程序中是期望的,但是您将.environmentObject的输出传递给了{{1} },因此类型检查失败,并且您得到编译器错误。

目前尚不清楚您的需求,但可能的解决方法如下:

SwiftUI.ModifiedContent