在主故事板上显示锁定屏幕

时间:2020-01-16 09:30:28

标签: ios swift iphone xcode storyboard

当用户从didFinishLaunchingWithOptionsapplicationWillEnterForeground进入应用程序时,我想显示一个锁定屏幕。

我在另一个情节提要中设置了锁屏,而不是在主故事板上。

如果我实例化锁定屏幕情节提要,然后移至主情节提要,则该应用程序将不会保持与用户离开应用程序时的状态(当您使用applicationWillEnterForeground进入应用程序时相同的状态。

因此,如果用户在特定的视图控制器中,然后离开应用并使用applicationWillEnterForeground再次进入,则情节提要将被实例化为锁定屏幕情节提要,并且一旦用户解锁屏幕,他将被重定向到主情节提要的rootViewController,而不是他以前所在的视图控制器。

主故事板以UITabBarController开头。

您如何克服这个问题?

if let lockedViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController() {

    window?.rootViewController = lockedViewController
    window?.makeKeyAndVisible()
}

锁定屏幕故事板:

enter image description here

谢谢

1 个答案:

答案 0 :(得分:3)

只需创建UIWindow的新实例并将引用保留在您的appdelegate中即可。

在前台过渡上创建新窗口,并在解锁发布窗口上

private var lockWindow:UIWindow?
func createNewWindow()  {
    lockWindow = UIWindow(frame: UIScreen.main.bounds)
    lockWindow!.rootViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController()
    lockWindow!.windowLevel = UIWindow.Level.alert + 1;
    lockWindow!.isHidden = false
}

func releaseWindow() {
    self.lockWindow?.isHidden = true
    self.lockWindow = nil
}