3

我有一个相当广泛的项目,我从 UIKit 开始,现在我决定使用 SwiftUI 来制作一些简单的表单页面,但我需要在 SwiftUI 中创建一个按钮来关闭当前视图,该视图显示以下代码:

   func goToSchedule() {
        let vc = UIHostingController(rootView: ScheduleView())
        if let topController = UIApplication.topViewController() {
            topController.present(vc, animated: true, completion: nil)
        }
    }
4

2 回答 2

3

您可以通过持有对它的引用来解除它。因此,请保持vc在更公开的范围内,并在需要时将其关闭。

var vc: UIViewController

或类似的东西:

if let topController = UIApplication.topViewController() {
    topController.presentedViewController?.dismiss(animated: true)
}
于 2020-01-05T05:12:11.230 回答
1

如果我正确理解了代码快照,那么.topViewController()将在显示UIHostingViewConrollerScheduleView显示,所以它应该在里面

var body: some View {
    // ...
    // somewhere ...

    Button("Close") {
        if let topController = UIApplication.topViewController() {
            topController.dismiss(animated: true)
        }
    }
}
于 2020-01-05T06:50:35.383 回答