alju2404
alju2404

Reputation: 31

Instantiate initial UIViewController in AppDelegate

I know, there are a lot of similar threads but I'm still struggling to get this problem solved.

I want to instantiate a certain viewcontroller in AppDelegate (only if a user is not logged in). But even without an authentication check my code in app delegate to instantiate my login controller seems to be ignored:

class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let loginController = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(withIdentifier: "loginController") as! LoginController
        self.window!.rootViewController = loginController
        self.window!.makeKeyAndVisible()
        
        return true
    }
}

No matter which view controller I instantiate in app delegate, the initial view controller set in storyboard appears when launching my app. (Note: if no view controller is set as initial in storyboard, the app is launching with a black screen). What's my mistake?

Thanks a lot in advance Alex

Upvotes: 1

Views: 1005

Answers (2)

matt
matt

Reputation: 535944

In a modern iOS app, the app delegate has no window. You can create one but it will be replaced. The visible window belongs to the scene delegate. You need to create the interface using scene delegate code.

Upvotes: 0

Vishal_VE
Vishal_VE

Reputation: 2137

You can try this code in didFinishLaunchingWithOptions method --

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialVC: ViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
     let navigationController = UINavigationController(rootViewController: initialVC)
    navigationController.isNavigationBarHidden = true
    self.window?.rootViewController = navigationController self.window?.makeKeyAndVisible()

Upvotes: 0

Related Questions