Swift - 加载下一个视图控制器(如果已注册)

时间:2016-12-24 17:42:11

标签: ios swift viewdidload viewwillappear viewdidappear

当我运行我的应用程序时,如果用户已经注册(从本地数据库检查),我想加载一个不同的ViewController。它工作,但我看到前一个屏幕瞬间,并希望摆脱它。如果我将以下代码放在viewWillAppear或viewDidLoad中,则它不起作用。当我把它放在ViewDidAppear中时,它可以工作并加载下一个屏幕。如何在不看屏幕的情况下如何做到这一点?

这有效,但我看到前一个屏幕瞬间。

   override func viewDidAppear(_ animated: Bool) {

    if(userInfo.Confirmed == "Yes") {

        performSegue(withIdentifier: "skipRegistration", sender: self)

    }

}

这不起作用:

覆盖func viewWillAppear(_ animated:Bool){

    if(userInfo.Confirmed == "Yes") {

        performSegue(withIdentifier: "skipRegistration", sender: self)

    }
}

这不起作用:

override func viewDidAppear(_ animated: Bool) {

    if(userInfo.Confirmed == "Yes") {

        performSegue(withIdentifier: "skipRegistration", sender: 

自)

    }

}

谢谢!

您可以在appLleunch方法的appdelegate中执行此代码,并在没有动画的情况下推送您的viewcontroller两次

注意正确维护viewController堆栈。

不了解如何推送viewController。

我将代码插入到appDelegate中,我试图调用正确的Controller来接管,但似乎无法找到它。我有一个标签栏控制器,我有一个导航控制器。它是这样的。

注册用户应跳至该应用的第一个屏幕。

未注册的用户获取这些页面:

注册屏幕

registration1屏幕

registration2 Screen

协议:屏幕 - >点击接受协议按钮然后转到:

Agreement segue -> (beginApp segue) to tab bar controller then goes to

Navigation Controller -> myFirst Screen of the App!

一切正常,但我需要跳到应用程序的第一个屏幕。

我已尝试使用此示例代码,但无法弄明白。

let navVC: UINavigationController =  rootView.viewControllers![4] as! UINavigationController


let vc = navVC.topViewController as! MoreTableViewController

我希望这是有道理的!

2 个答案:

答案 0 :(得分:1)

您可以在appLleunch方法的appdelegate中执行此代码,并在没有动画的情况下推送您的viewcontroller两次

注意正确维护viewController堆栈。

答案 1 :(得分:0)

这很有用!

// This works to load my tab bar controller and it works!
        let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController : UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "startHere") as! UITabBarController
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = initialViewController
        self.window?.makeKeyAndVisible()