Как сделать кнопку, которая отклоняет представление, представленное с помощью UIHostingController/SwiftUI?
У меня есть довольно обширный проект, который я начал с UIKit, и теперь я решил использовать SwiftUI для создания нескольких простых страниц формы, но мне нужно сделать кнопку в SwiftUI, чтобы закрыть текущее представление, которое представлено следующим кодом:
func goToSchedule() {
let vc = UIHostingController(rootView: ScheduleView())
if let topController = UIApplication.topViewController() {
topController.present(vc, animated: true, completion: nil)
}
}
2 ответа
Решение
Если я правильно понял снимок кода, то .topViewController()
будет представлена UIHostingViewConroller
когда ScheduleView
показано, поэтому он должен внутри него как
var body: some View {
// ...
// somewhere ...
Button("Close") {
if let topController = UIApplication.topViewController() {
topController.dismiss(animated: true)
}
}
}
Вы можете отклонить его, удерживая ссылку на него. Так что держисьvc
в более публичной сфере и отклоните его, когда вам нужно.
var vc: UIViewController
или что-то вроде этого:
if let topController = UIApplication.topViewController() {
topController.presentedViewController?.dismiss(animated: true)
}