首页 > 解决方案 > 如何将 Storyboard ViewController 添加到 SwiftUI 项目中?

问题描述

我正在开发我的 SwiftUI 项目,每个视图现在都在 SwiftUI 中,但是由于 SwiftUI 的一些限制,我必须将 Storyboard 的 ViewControllers 添加到我的 SwiftUI 项目中。我正在尝试这种方法,

struct AssetsListView: UIViewControllerRepresentable {

var taskID : String
public typealias UIViewControllerType = AssetsListViewController

func makeUIViewController(context: UIViewControllerRepresentableContext<AssetsListView>) -> AssetsListViewController {
    let assetsListVC = AssetsListViewController()
    assetsListVC.taskID = taskID
    return assetsListVC

}
func updateUIViewController(_ uiViewController: AssetsListViewController, context: UIViewControllerRepresentableContext<AssetsListView>) {


}  
}

这工作正常,甚至我的 Storyboard 的 ViewController 调用的 viewDidLoad() 方法,但我无法在我的 Storyboard 屏幕上看到任何元素。如何渲染这些元素?就像普通的情节提要一样。

标签: iosswiftxcodestoryboardswiftui

解决方案


您刚刚通过类初始化器创建了控制器,要从情节提要中实例化它,您必须执行以下操作

func makeUIViewController(context: 
         UIViewControllerRepresentableContext<AssetsListView>) -> AssetsListViewController {
    let storyboard = UIStoryboard(name: "Main",     // < your storyboard name here
          bundle: nil)
    let assetsListVC = storyboard.instantiateViewController(identifier: 
          "AssetsListViewController")      // < your controller storyboard id here

    assetsListVC.taskID = taskID
    return assetsListVC

}

推荐阅读