尝试出现<> on<>其视图不在窗口层次结构中

时间:2017-09-13 08:50:47

标签: ios swift warnings presentviewcontroller uiview-hierarchy

我在AppDelegate中使用此代码,在某些情况下,它会打开登录屏幕或启动画面。如下所示

if (mobile != nil && keepMe == true) { // skip login

        let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "SplashController") as UIViewController
        self.window?.rootViewController = initialViewControlleripad
        self.window?.makeKeyAndVisible()
    }
    else {// Show login

        let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "LoginScreen") as UIViewController
        self.window?.rootViewController = initialViewControlleripad
        self.window?.makeKeyAndVisible()
        print("Login!")
    }

首先打开启动画面:从启动画面进入主菜单画面

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let vc = self.view.window?.rootViewController
    let ViewController = storyBoard.instantiateViewController(withIdentifier: "toMenu")
   vc?.present(ViewController, animated:true, completion:nil)

它被打开了。 但是,当从app委托它首先打开登录屏幕并从登录屏幕点击按钮时,它会移动到启动,然后到主菜单,它会一直发出此警告,

 Warning: Attempt to present <SWRevealViewController: 0x7faac8839000> on <AppPhaseOne.Splash: 0x7faac7529530> whose view is not in the window hierarchy!

登录屏幕代码:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
                let ViewController = storyBoard.instantiateViewController(withIdentifier: "SplashController")
                self.present(ViewController, animated:true, completion:nil)

所以viewControllers的构造是这样的:

app delegate: Splash -> mainMenu (working fine)
app delegate: Loign -> Splash -> mainMenu (giving the warning)

我知道有很多解决方案可以解决这个问题,我已经尝试了很多可用的解决方案,但都没有。

0 个答案:

没有答案