на pushViewController AlphaComponent не работает - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь выдвинуть viewcontroller из NavigationController, и в viewcontroller я устанавливаю AlphaComponent для эффекта прозрачности, но он не работает.Он работает на Presnt, но не работает на Push, как решить эту проблему?

    let vc = SelectGeoLocation(nibName: "SelectGeoLocation", bundle: nil)
    self.navigationController?.pushViewController(vc, animated: true)

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Во время инициализации представление SelectGeoLocation не загружается.

Вы пытались поместить self.view.alpha = xxx в свой SelectGeoLocation-ViewDidLoad?

0 голосов
/ 20 февраля 2019

Ну, это из-за иерархии вашего UIViewcontrollers

Позвольте мне коротко объяснить,

A UINavigationController - это стек Last In first out из UIViewControllers, когда вы помещаете UIViewController, когда вы помещаете его в стек, это означает, что за вашим UIViewController нет ничего, потому что иерархия UIWindow содержит один элемент в то время внутри UINavigationController.

Посмотрите на это изображение, чтобы объяснить, что является последним в стеке, рассмотрите это как UINavigationViewController с UIViewControllers как Элементы данных enter image description here

Теперь, почему это работает, когда вы present UIViewController, просто потому, что вы накладываете UIViewController поверх текущего видимого.

Проверьте это изображение того, как работает презентация.
enter image description here

Заключение :

Когда вы установитеView.backgroundColor = .clear пока вы присутствуете, вы можете видеть заднюю часть вашего настоящего UIViewController, но при нажатии вы просто видите черный экран, потому что там ничего нет.

Краткий ответ : Вы не сможете увидеть, что стоит, если не представите.

...