ios – Swift – Redirect from StoryBoard to another


`Starting the project, I wanted to be neat when it came to having the views, so I made a storyBoard where I have my LogIn view and a StoryBoard that has a home, that is, I don’t work with a Main as a storyBoard.

When I start the application from the sceneDelegate I can know if I am logged in or not since I saved the corresponding flag in my UserDefaults, so this is how I create a storyBoard or another with its respective UIViewController.

My problem is when I do the LogIn per se, since at that point I would like to redirect to the homeStoryBoard, which uses the HomeUIViewController.
By having these views organized separately, I am not finding a way to go to that view without the possibility of returning to logIn, since I have already logged in.
The way I found, raises the view from home as if it were a popUp but that would not be working for me.

I came to make a new project where I used a single storyBoard Main and have my views there but with this solution the problem I see is that the “Back” button is generated that would make me return from Home to LogIn and that would not help me either.

I made the next code in mi sceneDelegate…

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let _ = UserDefaults.standard.string(forKey: kIsLogged) {
            print("I'm loggin")
            guard let windowScene = (scene as? UIWindowScene) else { return }
            
            window = UIWindow(frame: windowScene.coordinateSpace.bounds)
            window?.windowScene = windowScene
            window?.makeKeyAndVisible()
            
            let storyboard = UIStoryboard(name: "ServiceHomeViewStoryBoard", bundle: nil)
            window?.rootViewController =  storyboard.instantiateViewController(withIdentifier: "SB_ServiceHome")
        } else {
            print("I'm not loggin")
            guard let windowScene = (scene as? UIWindowScene) else { return }
            
            window = UIWindow(frame: windowScene.coordinateSpace.bounds)
            window?.windowScene = windowScene
            window?.makeKeyAndVisible()
            
            
            let storyboard = UIStoryboard(name: "LogIn", bundle: nil)
            window?.rootViewController =  storyboard.instantiateViewController(withIdentifier: "LogInStoryBoard")
        }
    }

In my LooginViewController I made after logIn function success…

let storyBoard = UIStoryboard(name: "ServiceHomeViewStoryBoard", bundle: nil)
            let serviceHomeViewController = storyBoard.instantiateViewController(withIdentifier: "SB_ServiceHome")
            self.navigationController?.pushViewController(serviceHomeViewController, animated: true)
            self.navigationController?.present(serviceHomeViewController, animated: true)
            self.present(serviceHomeViewController, animated:true, completion:nil)

The second view appears as a modal

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img