【发布时间】:2020-10-02 00:16:05
【问题描述】:
在某些情况下(iPhone X、iOS 13)可以通过从顶部拉动手势来关闭呈现的视图控制器。
在这种情况下,我似乎找不到通知呈现视图控制器的方法。我错过了什么吗?
我发现的唯一方法是向呈现的视图控制器的 viewDidDisappear 添加一个委托方法。
类似:
class Presenting: UIViewController, PresentedDelegate {
func someAction() {
let presented = Presented()
presented.delegate = self
present(presented, animated: true, completion: nil)
}
func presentedDidDismiss(_ presented: Presented) {
// Presented was dismissed
}
}
protocol PresentedDelegate: AnyObject {
func presentedDidDismiss(_ presented: Presented)
}
class Presented: UIViewController {
weak var delegate: PresentedDelegate?
override func viewDidDisappear(animated: Bool) {
...
delegate?.presentedDidDismiss(self)
}
}
也可以通过通知来管理这个,使用 vc 子类,但仍然不能令人满意。
extension Notification.Name {
static let viewControllerDidDisappear = Notification.Name("UIViewController.viewControllerDidDisappear")
}
open class NotifyingViewController: UIViewController {
override open func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
NotificationCenter.default.post(name: .viewControllerDidDisappear, object: self)
}
}
一定有更好的方法来做到这一点?
【问题讨论】:
-
你的意思是 iOS 13 演示文稿吗?
-
在某些 iphone 上可以通过手势关闭呈现的视图控制器 ||这是在运行 13.0 及更高版本的设备上关闭 VC 的默认方式。
-
是的,我会编辑原始问题
标签: ios swift uiviewcontroller