Skip to main content

SwiftUI专辑010-已有App中使用SwiftUI

· 预计阅读2分钟

headerimg 本章,我们将学习如何从 UIKit 视图跳转到 SwiftUI 视图,同时将文本传递给我们的 SwiftUI 视图。

Getting ready

新建一个普通Storyboard工程。

How to do it…

  1. 选中Main.stroyboard。
  2. 选中ViewController
  3. 在菜单中选择 Editor | Embed in | Navigation Controller.
  4. 选择右上角的+号,添加一个Hosting View Controller到storyboard里
  5. 添加一个Button到ViewController中,添加点击btn跳转到HostingViewController
  6. 拖动segue到ViewController中,取名为gotoSwiftUI
    @IBSegueAction func gotoSwiftUI(_ coder: NSCoder) -> UIViewController? {
return UIHostingController(coder: coder, rootView: rootView)
}

  1. 添加import SwiftUI
import SwiftUI
  1. 在gotoSwiftUI中创建rootView
@IBSegueAction func gotoSwiftUI(_ coder: NSCoder) -> UIViewController? {
let greetings = "Hello From UIKit"
let rootView = Greetings(textFromUIKit:greetings)
return UIHostingController(coder: coder, rootView: rootView)
}
  1. 新建一个SwiftUI View, 取名Greetings
  2. 实现Greetings
struct Greetings: View {
var textFromUIKit = ""
var body: some View {
Text(textFromUIKit)
}
}

最终,点击button,就能够跳转到Greetings,并显示传过去的参数 Untitled

How it works…

为了在普通项目中显示SwiftUI,你需要将SwiftUI视图包裹到一个ViewController 或者 InterfaceController中。

我们添加了UIHostingController作为SwiftUI的容器。