Setting RootViewController in Appdelegate

10,454

Solution 1

You need to instantiate the window and make it key and visible.

let bounds = UIScreen.main.bounds
self.window = UIWindow(frame: bounds)
self.window?.rootViewController = rootViewController
self.window?.makeKeyAndVisible()

Solution 2

You can load a particular view controller from storyboard.

See this answer.

Example:

window?.rootViewController = initialViewController()

where

    private func initialViewController() -> UIViewController {
        if isUserLoggedIn {
            return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoadingViewControllerIdentifier")
        } else {
            return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeViewControllerIdentifier")
        }
    }

Solution 3

After setting self.window?.rootViewController = testob, you have to do the following

[self.window makeKeyAndVisible]

Also, initialize the viewController from storyboard using appropriate method

Share:
10,454
Harshavardhan
Author by

Harshavardhan

Updated on June 14, 2022

Comments

  • Harshavardhan
    Harshavardhan almost 2 years

    I have storyboard in my application, but i don't want to set the Main storyboard file base name in info.plist, as well as I don't want to set the entry point i.e Is Initial View Controller in storyboard for any viewcontroller scene.

    Though I want to launch the app with some scene from the storyboard, but all shows me a black screen.

    When I tried

    let testob:testClass = testClass()
    self.window?.rootViewController = testob
    

    in AppDelegate, it didn't worked and got the same black screen.

    But when I set the Main storyboard file base name in info.plist, and the entry point i.e Is Initial View Controller in storyboard every thing works.

    Is there any solution to do so?