我有一个从UIKit开始的相当广泛的项目,现在我决定使用SwiftUI制作一些简单的表单页面,但是我需要在SwiftUI中创建一个按钮以关闭当前视图,该视图随以下内容呈现代码:
func goToSchedule() {
let vc = UIHostingController(rootView: ScheduleView())
if let topController = UIApplication.topViewController() {
topController.present(vc, animated: true, completion: nil)
}
}
答案 0 :(得分:3)
您可以通过保留对它的引用来关闭它。因此,将vc
置于更大的公共范围内,并在需要时将其关闭。
var vc: UIViewController
或类似的东西:
if let topController = UIApplication.topViewController() {
topController.presentedViewController?.dismiss(animated: true)
}
答案 1 :(得分:1)
如果我正确理解了代码快照,那么在显示.topViewController()
时,UIHostingViewConroller
将会显示在ScheduleView
上,因此它应该像里面一样
var body: some View {
// ...
// somewhere ...
Button("Close") {
if let topController = UIApplication.topViewController() {
topController.dismiss(animated: true)
}
}
}