在 SwiftUI 中调用 UIKit
在 SwiftUI 中使用 UIKit 需要用到UIViewRepresentable
和UIViewControllerRepresentable
两个协议,分别对应在 SwiftUI 中使用UIView
和UIViewController
。
在 SwiftUI 中使用 UIView
在 SwiftUI 中使用UIView
需要实现UIViewRepresentable
协议,如下代码实现了在 SwiftUI 的List
控件中使用UITableViewCell
1 | struct TableViewCell: UIViewRepresentable { |
在 SwiftUI 中使用 UIViewController
在 SwiftUI 中使用UIViewController
需要实现UIViewControllerRepresentable
协议,如下示例展示了怎么从一个 SwiftUI 页面跳转到UIViewController
。
1 | struct MyViewController: UIViewControllerRepresentable { |
在 UIKit 中调用 SwiftUI
在 UIKit 中使用 SwiftUI 要比在 SwiftUI 中使用 SwiftUI 简单很多,只需要使用UIHostingController
对 SwiftUI 的控件进行一下包装就可以,代码如下:
1 | let vc = UIHostingController(rootView: Text("Hello World")) |
包装出来的结果是一个UIViewController
,这样就可以在其他UIView
或UIViewController
中使用了。可以将这个UIViewController
作为一个childViewController
加到其他的UIView
或UIViewController
中去