Таким образом, фактическое решение было очень неясным.
Я использовал модуль под названием FloatingPanelController, который вызывал некоторые проблемы с периодическим удалением всего моего стека представлений.
Чтобы разрешить его, я изменил расширение в модуле
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. Как только я вставил эту строку, проблема была решена.
Это, вероятно, очень мало кому пригодится!