如何从 NavigationController 中的 SwiftUI 视图推送到 UIViewController

Moh*_*d S 2 uinavigationcontroller ios swift swiftui

我有一个从场景委托实例化的SwiftUI ViewUINavigationController 我想UIViewControllerSwiftUI推送到另一个 View

My Scene Delegate 显示了 myView是如何实例化的:

    let vc = UIHostingController(rootView:SwiftUIView())
    let navigationControll = UINavigationController(rootViewController: vc)
    self.window?.rootViewController = navigationControll
    // Present window to screen
    self.window?.makeKeyAndVisible()
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Moh*_*d S 6

您必须将您的产品包装 UIViewController在 SwiftUI 中View,然后导航到它。

例如

struct MyMasterViewController: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> MasterViewController {
        var sb = UIStoryboard(name: "Main", bundle: nil)
        var vc = sb.instantiateViewController(identifier: "MasterViewController") as! MasterViewController
        return vc
    }
    
    func updateUIViewController(_ uiViewController: MasterViewController, context: Context) {
    }
    
    typealias UIViewControllerType = MasterViewController
}
Run Code Online (Sandbox Code Playgroud)

并在NavigationLinkSwiftUI中像这样简单地调用它View

struct SwiftUIView: View {
    var body: some View {
        NavigationLink(destination: MyMasterViewController()) {
                           Text("Show Detail View")
        }.navigationBarTitle("Navigation")
    }
}

struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }.   
}
Run Code Online (Sandbox Code Playgroud)

此处阅读有关在 SwiftUI 中包装 ViewControllers 的更多信息

  • 所以你提出了一个问题并自己回答,然后让你的答案被接受? (3认同)