Не могу отменить просмотр контроллера - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь отклонить View Controller, который был представлен как модальный .overCurrentContext.

Контроллер представлен так:

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

Когда я вызываю dismiss внутриКонтроллер vc, который появился, ничего не делает.

Чтобы дать более подробную информацию о родительском ViewController, он является ViewController внутри NavigationController и является третьим в стеке VC NavigationController.

1 Ответ

0 голосов
/ 07 октября 2019

Таким образом, фактическое решение было очень неясным.

Я использовал модуль под названием 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. Как только я вставил эту строку, проблема была решена.

Это, вероятно, очень мало кому пригодится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...