如何制作一个关闭使用 UIHostingController/SwiftUI 呈现的视图的按钮?
How to make a button that dismisses a view presented using UIHostingController/SwiftUI?
我有一个相当广泛的项目,我从 UIKit 开始,现在我决定使用 SwiftUI 来制作一些简单的表单页面,但我需要在 SwiftUI 中制作一个按钮来关闭当前显示的视图以下代码:
func goToSchedule() {
let vc = UIHostingController(rootView: ScheduleView())
if let topController = UIApplication.topViewController() {
topController.present(vc, animated: true, completion: nil)
}
}
您可以通过保留对它的引用来关闭它。因此,将 vc
保持在更多 public 范围内,并在需要时将其关闭。
var vc: UIViewController
或类似这样的内容:
if let topController = UIApplication.topViewController() {
topController.presentedViewController?.dismiss(animated: true)
}
如果我正确理解了代码快照,那么 .topViewController()
将在显示 ScheduleView
时显示 UIHostingViewConroller
,所以它应该像
var body: some View {
// ...
// somewhere ...
Button("Close") {
if let topController = UIApplication.topViewController() {
topController.dismiss(animated: true)
}
}
}
我有一个相当广泛的项目,我从 UIKit 开始,现在我决定使用 SwiftUI 来制作一些简单的表单页面,但我需要在 SwiftUI 中制作一个按钮来关闭当前显示的视图以下代码:
func goToSchedule() {
let vc = UIHostingController(rootView: ScheduleView())
if let topController = UIApplication.topViewController() {
topController.present(vc, animated: true, completion: nil)
}
}
您可以通过保留对它的引用来关闭它。因此,将 vc
保持在更多 public 范围内,并在需要时将其关闭。
var vc: UIViewController
或类似这样的内容:
if let topController = UIApplication.topViewController() {
topController.presentedViewController?.dismiss(animated: true)
}
如果我正确理解了代码快照,那么 .topViewController()
将在显示 ScheduleView
时显示 UIHostingViewConroller
,所以它应该像
var body: some View {
// ...
// somewhere ...
Button("Close") {
if let topController = UIApplication.topViewController() {
topController.dismiss(animated: true)
}
}
}