如何将Storyboard ViewController添加到SwiftUI项目中?

5

我正在进行SwiftUI项目开发,所有的视图都已经使用SwiftUI实现,但由于一些SwiftUI的限制,我需要将Storyboard中的ViewController添加到我的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画面上看到任何元素。我该如何渲染这些元素?就像普通的Storyboard一样。

1个回答

11

您刚刚通过类初始化程序创建了控制器,要从故事板实例化它,您需要执行以下操作:

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

}

嗨@Asperi,创建这样的ViewController并将其与其他SwiftUI内容一起嵌入视图中是否是一个好的实践?例如,在此ViewController下方放置一个文本? - ConteOlaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接