通过Appdelegate调用时展开View Controller时出错

时间:2017-07-20 20:06:26

标签: ios swift uiviewcontroller viewcontroller appdelegate

因此,当应用程序到达前台时,我尝试在当前vc上显示密码VC。当前,在密码VC上(VC i&m;尝试出现在顶部)具有此功能:

func present() {
        print("calling present")
        if let passcodeVC = storyboard?.instantiateViewController(withIdentifier: "IdlePasscodeVC") {
        passcodeVC.modalPresentationStyle = .overCurrentContext
        present(passcodeVC, animated: true, completion: nil)
        } else {
            print("there was an error unwrapping")
        }
    }

当应用程序使用以下代码到达前台时,我通过AppDelegate调用它:

func applicationWillEnterForeground(_ application: UIApplication) { 
        print("app entered foreground")
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    if let passcodeVC = storyboard.instantiateViewController(withIdentifier: "LockVC") as?  IdlePasscodeViewController{
        passcodeVC.present()
    }
    }

修正了一个问题;但现在我收到错误"警告:尝试在窗口层次结构中显示其视图!"

有没有办法解决这个问题?或者是否有更好的方法有人可以告诉我(我已经阅读了通知中心和听众是可能的,但我不知道从哪里开始)。

希望密码VC在最后一个打开的屏幕上显示,这样当密码正确时,它可以解雇自己

可能的替代方法会有所帮助。

编辑:是否可以使用此解决方案?

Attempt to present ViewController whose view is not in the windows hierarchy

1 个答案:

答案 0 :(得分:0)

检查这个我觉得可以用某种方式帮助你

func applicationWillEnterForeground(_ application: UIApplication) { 
        print("app entered foreground")
        let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
        if let passcodeVC = storyboard?.instantiateViewController(withIdentifier: "IdlePasscodeVC") as?  IdlePasscodeViewController{
        passcodeVC.present()
        }
    }

希望这有帮助