Swift - pushViewController from appDelegate, rootViewController.navigationController is nil Swift - pushViewController from appDelegate, rootViewController.navigationController is nil ios ios

Swift - pushViewController from appDelegate, rootViewController.navigationController is nil


It seems that rootViewController actually is of type UINavigationController in my case, so casting it on declaration allowed me to call pushToViewController directly on it.

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {    let rootViewController = self.window!.rootViewController as! UINavigationController    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)    let profileViewController = mainStoryboard.instantiateViewController(withIdentifier: "InstructionVC") as! InstructionVC    rootViewController.pushViewController(profileViewController, animated: true)    return true}


SWIFT 4: Safe way to push with the use of conditional binding and Chaining

if let navController = self.navigationController, let viewController = self.storyboard?.instantiateViewController(withIdentifier: "indentfier") as? CustomViewController{    navController.pushViewController(viewController, animated: true)}

In One line of code :

Swift 3:

self.navigationController!.pushViewController(self.storyboar‌​d!.instantiateViewCo‌​ntroller(withIdentif‌​ier: "view2") as UIViewController, animated: true)

self.navigationController!.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("view2") as UIViewController, animated: true)


APPDELEGATE TO PAGE:

        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)        let loginPageView = mainStoryboard.instantiateViewControllerWithIdentifier("leadBidderPagerID") as! LeadBidderPage        var rootViewController = self.window!.rootViewController as! UINavigationController        rootViewController.pushViewController(loginPageView, animated: true)

PAGE TO PAGE:

        let loginPageView = self.storyboard?.instantiateViewControllerWithIdentifier("scoutPageID") as! ScoutPage        self.navigationController?.pushViewController(loginPageView, animated: true)