该应用仍然大量使用ViewControllers和TableViewController,这使得集成SwiftUI变得困难。
首先,我正在从一个ViewController中呈现一个SwiftUI视图。
class SwiftUIViewController : UIViewController {
let contentView = UIHostingController(rootView: SwiftUIView())
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(contentView.view)
}
}
现在,从我的 SwiftUIView 中,我需要启动 ViewControllers 和 TableViewControllers。 我创建了一个注入器类,可用于 .sheet,以从 SwiftUI 显示视图控制器。
struct ViewControllerInjector : UIViewControllerRepresentable {
let viewController: UIViewController
func makeUIViewController(context: Context) -> UIViewController {
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
}
现在这个方法可以工作,唯一的问题是我似乎找不到一个方法来呈现ViewController而不是一个.sheet。
struct SwiftUIView : View {
@State private var showingVC1 = false
...
.sheet(isPresented: $showingVC1) {
ViewControllerInjector(viewController: ViewController1())
}
...
}
我希望完全离开SwiftUI屏幕,并继续使用视图控制器,直到我按下返回按钮并返回到SwiftUI屏幕。此外,即使我创建了一个专门用于TableView的第二个注入器类,注入器似乎也无法与TableViewControllers一起使用。
这种类型的导航是否可行?如果有任何不清楚的地方,请随时留言。谢谢。