Представить 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

0 ответов

Другие вопросы по тегам