Ios 从SwiftUI视图切换到UIViewController

Ios 从SwiftUI视图切换到UIViewController,ios,swiftui,Ios,Swiftui,我正在努力在我现有的应用程序中实现一些SwiftUI内容。我目前有一个UIViewController,它承载用于相机预览的MTKView 我已经创建了一个新的SwiftUI视图,它现在是我的根视图,在我的SceneDelegate.swift文件中设置。正如预期的那样,SwiftUI视图在启动时加载。现在,我想创建一个segue,当用户点击我列表中的一行时,它将全屏切换到我现有的UIViewController。我是这样称呼的 var body: some View { VStack

我正在努力在我现有的应用程序中实现一些SwiftUI内容。我目前有一个UIViewController,它承载用于相机预览的MTKView

我已经创建了一个新的SwiftUI视图,它现在是我的根视图,在我的
SceneDelegate.swift
文件中设置。正如预期的那样,SwiftUI视图在启动时加载。现在,我想创建一个segue,当用户点击我列表中的一行时,它将全屏切换到我现有的UIViewController。我是这样称呼的

var body: some View {
    VStack {
        NavigationView {
            List(sessionTypes) { session in
                NavigationLink(destination: CameraControllerWrapper()) {
                    SessionRow(session: session)
                    .frame(height: 40.0)
                }
            }
        .navigationBarTitle(Text("Camera Types"))
        }
    }
}
为了子孙后代,这是我的
cameracontrollerrapper
UIViewControllerRepresentable

struct CameraControllerWrapper: UIViewControllerRepresentable {
typealias UIViewControllerType = CameraController

   func makeUIViewController(context: UIViewControllerRepresentableContext<CameraControllerWrapper>) -> CameraControllerWrapper.UIViewControllerType {
    return CameraController()
   }

   func updateUIViewController(_ uiViewController: CameraControllerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<CameraControllerWrapper>) {
    //
   }
}
struct-cameracontrollerrapper:UIViewControllerRepresentable{
typealias UIViewControllerType=CameraController
func makeUIViewController(上下文:UIViewControllerRepresentableContext)->CameraController Rapper.UIViewControllerType{
返回CameraController()
}
func updateUIViewController(uViewController:CameraControllerRapper.UIViewControllerType,上下文:UIViewControllerRepresentableContext){
//
}
}

虽然这“起作用”,但只要调用CameraController,我的应用程序就会崩溃,因为似乎找不到我的任何IBMOutlet。CameraController是脚本中内置的UIViewController。

我意识到我需要从脚本而不是代码中实例化UIViewController,从而解决了这个问题(因为我在脚本中构建了它的布局,以及一些编程元素)。要使用上面的
导航链接
,我需要调整我的
UIViewControllerRepresentable

struct CameraControllerWrapper: UIViewControllerRepresentable {
    typealias UIViewControllerType = CameraController

    func makeUIViewController(context: UIViewControllerRepresentableContext<CameraControllerWrapper>) -> CameraControllerWrapper.UIViewControllerType {

    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let mainViewController: CameraController = mainStoryboard.instantiateViewController(withIdentifier: "CameraController") as! CameraController
      return mainViewController

    }

    func updateUIViewController(_ uiViewController: CameraControllerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<CameraControllerWrapper>) {
        //
    }
}
struct-cameracontrollerrapper:UIViewControllerRepresentable{
typealias UIViewControllerType=CameraController
func makeUIViewController(上下文:UIViewControllerRepresentableContext)->CameraController Rapper.UIViewControllerType{
let mainStoryboard:UIStoryboard=UIStoryboard(名称:“Main”,bundle:nil)
让mainViewController:CameraController=MainstryBoard。实例化ViewController(标识符为:“CameraController”)为!CameraController
返回主视图控制器
}
func updateUIViewController(uViewController:CameraControllerRapper.UIViewControllerType,上下文:UIViewControllerRepresentableContext){
//
}
}

为了清楚起见,你是说你有(1)一个
情节提要
应用程序,你(2)使
MainViewController
根视图成为一个
SwiftUI
视图,以及(3)在这个根视图中放置一个
NavigationView
,并且(4)导航到一个
UIViewControllerRepresentable
,它有(5)
IBOutlets
在其中定义了什么?如果这条链上有什么不对劲,请纠正我。我想那是对的。我有一个UIViewController,它是在故事板中构建和设计的,带有IBOutlets,以前是我的入口视图控制器。我现在添加了一个SwiftUI视图,它是我的根视图,并希望切换到以前的UIViewController,它现在是“第二个”视图控制器,不再是主视图。