代码之家  ›  专栏  ›  技术社区  ›  Mohmmad S

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

  •  0
  • Mohmmad S  · 技术社区  · 4 年前

    我有一个 迅捷 View UINavigationController 我想换一个 UIViewController 迅捷 看法

    我的场景代表展示了我的 看法 被实例化:

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

    我怎样才能做到这一点?

    1 回复  |  直到 4 年前
        1
  •  8
  •   Mohmmad S    4 年前

    你得把衣服包起来 UIViewController 迅速地 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
    }
    

    简单地说 NavigationLink 像这样来自SwiftUI 看法

    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()
        }.   
    }
    

    了解有关在SwiftUI中包装ViewController的更多信息 here