截至现在,我有一个完全使用UIKit构建的应用程序。然而,我希望能够开始实现一些SwiftUI视图来替换一些UIViewControllers。
我已经能够通过按钮点击从UIViewController导航到SwiftUI视图:
@IBAction func buttonTapped(_ sender: Any) {
let newView = UIHostingController(rootView: SwiftUIView(viewObj: self.view, sb: self.storyboard, dismiss: self.dismiss) )
view.window?.rootViewController = newView
view.window?.makeKeyAndVisible()
}
我的问题是,我该如何从单个SwiftUI视图过渡到UIViewController?(因为应用程序的其余部分在UIKit中)? 我在SwiftUI View中有一个按钮,可以在点击时导航回UIViewController。 我尝试过:
- 将
view
和storyboard
对象传递给SwiftUI View,然后调用类似于以上代码的操作来更改当前视图控制器。 但是,在模拟器上尝试时没有任何反应。 - 使用
.present
以模态方式显示SwiftUI View。 这可以工作,并且我可以允许SwiftUI View.dismiss
自身。 但是,这仅以模态方式工作,我希望使其正常工作(即更改屏幕)
这是我的简单SwiftUI View:
struct SwiftUIView: View {
var viewObj:UIView? // Perhaps use this for transition back?
var sb:UIStoryboard?
var dismiss: (() -> Void)?
var body: some View {
Button(action: {
// Do something here to Transition
}) {
Text("This is a SwiftUI view.")
}
}
}
我不太明白如何将SwiftUI正确地集成到UIKit中,而不是反过来,并且我不确定UIViewControllerRepresentable
是否是解决方法。非常感谢您提供任何解决方案、替代方案或有用的知识。再次感谢!