本章,我们将学习如何从 UIKit 视图跳转到 SwiftUI 视图,同时将文本传递给我们的 SwiftUI 视图。
Getting ready
新建一个普通Storyboard工程。
How to do it…
- 选中Main.stroyboard。
- 选中ViewController
- 在菜单中选择 Editor | Embed in | Navigation Controller.
- 选择右上角的+号,添加一个Hosting View Controller到storyboard里
- 添加一个Button到ViewController中,添加点击btn跳转到HostingViewController
- 拖动segue到ViewController中,取名为gotoSwiftUI
@IBSegueAction func gotoSwiftUI(_ coder: NSCoder) -> UIViewController? {
return UIHostingController(coder: coder, rootView: rootView)
}
- 添加import SwiftUI
import SwiftUI
- 在gotoSwiftUI中创建rootView
@IBSegueAction func gotoSwiftUI(_ coder: NSCoder) -> UIViewController? {
let greetings = "Hello From UIKit"
let rootView = Greetings(textFromUIKit:greetings)
return UIHostingController(coder: coder, rootView: rootView)
}
- 新建一个SwiftUI View, 取名Greetings
- 实现Greetings
struct Greetings: View {
var textFromUIKit = ""
var body: some View {
Text(textFromUIKit)
}
}
最终,点击button,就能够跳转到Greetings,并显示传过去的参数
How it works…
为了在普通项目中显示SwiftUI,你需要将SwiftUI视图包裹到一个ViewController 或者 InterfaceController中。
我们添加了UIHostingController作为SwiftUI的容器。