Представить viewcontroller поверх делегата приложения
Так что я потратил последние 5-6 часов, пытаясь заставить эту функцию работать, и я столкнулся с несколькими подводными камнями в моей реализации и ограничениями понимания. Я попробовал несколько методов:
Способ 1:
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc : UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "PasscodeLockVC")
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
print("app entered foreground")
}
Проблема: я не могу закрыть экран от PasscodeLockVC (это пароль VC).
Способ 2:
public extension UIViewController {
func show() {
let win = UIWindow(frame: UIScreen.main.bounds)
let vc = UIViewController()
vc.view.backgroundColor = .clear
win.rootViewController = vc
win.windowLevel = UIWindowLevelAlert + 1
win.makeKeyAndVisible()
vc.present(self, animated: true, completion: nil)
}
func hide() {
dismiss(animated: true, completion: nil)
}
}
Проблема: я получаю черный экран, когда увольняюсь.
** Итак, мои вопросы ** Может ли кто-нибудь направить меня на лучший способ, чтобы мой экран блокировки присутствовал при входе на передний план (я знаю, что он идет в applicationWillEnterForegroud), но когда я делаю это, он сохраняет экран, который был активен, когда приложение был закрыт (будет ли все его содержимое, так как это приложение дневник)? Я был в тупике весь день и действительно мог использовать какое-то направление.
Работает на самом последнем Xcode