Есть вероятность, что есть мой пользовательский вид на мой контроллер и на котором я должен показывать предупреждение. Поэтому я использую расширение ниже, чтобы представить контроллеры в окне, а не на любом контроллере UIViewController.
Расширение
extension UIViewController {
func presentControllerToWindow(){
let win = UIWindow(frame: UIScreen.main.bounds)
let vc = UIViewController()
vc.view.backgroundColor = .clear
win.rootViewController = vc
win.windowLevel = UIWindow.Level.alert + 1
win.makeKeyAndVisible()
vc.present(self, animated: true, completion: nil)
}
}
Present AlertController
let alertController = UIAlertController(title: nil, message: "Select Option", preferredStyle: .alert)
alertController.presentControllerToWindow()
Проблема:
Код работает нормально до swift 4.X, но в swift 5.X контроллер предупреждений появляется и автоматически отключается другая секунда.
GIF:
- OpenPicker добавляет пользовательский вид в качестве подпредставления.
- При нажатии на кнопку добавления файла, я представляю alertcontroller.
- Его автоматически закрывается.
Редактировать:
Я добавляю свой пользовательский вид, как показано ниже.
extension UIView {
func addToWindow() {
let window = UIApplication.shared.keyWindow!
self.frame = window.bounds
window.makeKeyAndVisible()
window.windowLevel = window.windowLevel + 1
window.addSubview(self)
}
}
let customView = MyCustomView()
customView.addToWindow()
Теперь над этим MyCustomView
мне нужно показать UIAlertController