Присутствует модальное при переходе к предыдущему виду - PullRequest
0 голосов
/ 22 мая 2018

Когда я покидаю определенный контроллер вида, я хочу, чтобы он отображал модальное представление поверх предыдущего представления в стеке навигации.В настоящее время я делаю это с этим кодом:

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.viewControllers.last?.present(myModalView, animated: false, completion: nil)
}

Этот кажется работает, но каждый раз, когда я покидаю вид, я получаю предупреждение в консоли:

Presenting view controllers on detached view controllers is discouraged <Project.MyViewController: 0x7fe09281a400>.

Так что я обеспокоен тем, что может быть проблема, с которой я еще не сталкивался.Есть ли «правильный» способ сделать это?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Как оказалось, self.present(myModalView, animated: false, completion: nil) отлично работает без предупреждений.Оглядываясь назад, я, вероятно, должен был сначала проверить это, но я предполагал, что это не будет работать, так как представление исчезало.

Кроме того, оно не вообще не работает с animated: trueтогда как мое оригинальное решение делает без предупреждений (но я не хочу, чтобы оно было анимированным).Не уверен, что именно так работают асинхронные процессы или есть что-то большее.

0 голосов
/ 23 мая 2018

Вы представляете модальное изображение на текущем контроллере представления, а не поверх предыдущего контроллера представления.Когда вы делаете

self.navigationController?.viewControllers.last?.present(myModalView, animated: false, completion: nil)

в протоколе viewWillDisappear, это то же самое, что сказать

self.present(myModalView, animated: false, completion: nil)

Вместо этого попробуйте это:

let previousVCIndex = self.navigationController?.viewController.index(of: self)
self.navigationViewController?.viewControllers[previousVCIndex! - 1]?.present(myModalView, animated: false, completion: nil)
...