如何将 Storyboard ViewController 添加到 SwiftUI 项目中?
How to add Storyboard ViewController into SwiftUI Project?
我正在处理我的 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>) {
}
}
这工作正常,甚至是我的故事板 ViewController 调用的 viewDidLoad() 方法,但我无法在我的故事板屏幕上看到任何元素。我怎样才能渲染这些元素?就像普通的情节提要一样。
您刚刚通过 class 初始化程序创建了控制器,要从情节提要中实例化它,您必须按以下方式进行操作
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
}
我正在处理我的 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>) {
}
}
这工作正常,甚至是我的故事板 ViewController 调用的 viewDidLoad() 方法,但我无法在我的故事板屏幕上看到任何元素。我怎样才能渲染这些元素?就像普通的情节提要一样。
您刚刚通过 class 初始化程序创建了控制器,要从情节提要中实例化它,您必须按以下方式进行操作
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
}