gpt4 book ai didi

swift - 无法关闭 View Controller

转载 作者:行者123 更新时间:2023-11-28 07:20:40 25 4
gpt4 key购买 nike

我正试图关闭一个已呈现为模态 .overCurrentContext 的 View Controller 。

Controller 是这样呈现的

let vc= UIViewController()
vc.modalPresentationStyle = .overCurrentContext
present(vc, animated: true, completion: nil)

当我在已出现的 vc Controller 中调用 dismiss 时,它什么也没做。

为了提供有关父 ViewController 的更多详细信息,它是 NavigationController 中的一个 ViewController,它在 NavigationController 的 VC 堆栈中排在第三位。

最佳答案

所以实际的解决方案非常晦涩。

我正在使用一个名为 FloatingPanelController 的 Pod,它导致间歇性地关闭我的整个 View 堆栈时出现一些问题。

为了解决这个问题我在Pod中修改了一个扩展

public extension UIViewController {
@objc func fp_original_dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
// Implementation will be replaced by IMP of self.dismiss(animated:completion:)
}
@objc func fp_dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
// Call dismiss(animated:completion:) to a content view controller
if let fpc = parent as? FloatingPanelController {
if fpc.presentingViewController != nil {
self.fp_original_dismiss(animated: flag, completion: completion)
} else {
fpc.removePanelFromParent(animated: flag, completion: completion)
}
return
}
// Call dismiss(animated:completion:) to FloatingPanelController directly
if let fpc = self as? FloatingPanelController {
if fpc.presentingViewController != nil {
self.fp_original_dismiss(animated: flag, completion: completion)
} else {
fpc.removePanelFromParent(animated: flag, completion: completion)
}
return
}

// For other view controllers
self.fp_original_dismiss(animated: flag, completion: completion)
}
}

特别是我删除了最后一行:

    self.fp_original_dismiss(animated: flag, completion: completion)

这就是导致问题的原因。我不知道这个方法实际上覆盖了整个 dismiss 方法。一旦我重新插入该行,问题就解决了。

这对其他人来说可能用处不大!

关于swift - 无法关闭 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com