我想知道是否有任何方法可以在遗留项目中开始使用SwiftUI,并且仍然能够在SwiftUI场景中来回导航。也就是说,假设我只想为我去年一直在从事的项目支持最后一个iOS 13 。一切都建立在UIKit之上,导航以通常的方式呈现或推送视图控制器。
现在我想开始使用 SwiftUI,所以我在项目的 General 中启用了该选项,目标为iOS 13 ,在Info.plist 中获取我的SceneDelegate和我的新键值对。为了导航到Swift UI场景,我可以推送一个UIHostingViewController,它的 rootView 将是我新设计的SwiftUI视图。但是如何使用NavigationLink推送旧的UIKit视图控制器?
class ViewController: UIViewController {
@IBAction func userDidTapGo(_ sender: Any) {
let contentView = ContentView()
navigationController?.pushViewController(UIHostingController(rootView: contentView), animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
title = "UIKit"
}
}
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: /* what should be here?? */) {
Text("Go to UIKit")
}
}.navigationBarTitle("Swift UI")
}
}