2017-09-15 2 views
0

Ich habe einige View-Controller in UINavigationController eingebettet. Der erste View-Controller ist die Anmeldeseite. Der zweite View-Controller ist die Startseite. Ich möchte initialview Controller als zweite View-Controller, wenn der Benutzer bereits angemeldet ist.Einstellung des in UINavigationController eingebetteten Intialview-Controllers

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
{ 
    // Override point for customization after application launch. 
    if let data = Locksmith.loadDataForUserAccount(userAccount: "someString") 
    { 
     if let userAccessToken = data["accessToken"] 
     { 
      if (userAccessToken as! String) != "" 
      { 
       let initialViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "HomePageViewController") as! HomePageViewController 
       loginResponse = LoginResponse() 
       loginResponse?.UserAccessToken = userAccessToken as? String 
       self.window = UIWindow(frame: UIScreen.main.bounds) 
       self.window?.rootViewController = initialViewController 
       self.window?.makeKeyAndVisible() 
      } 
     } 
    } 
    return true 
} 

Das Problem ist, die nachfolgenden View-Controller nicht in der Navigation-Controller eingebettet sind. Da es nicht im Navigationscontroller eingebettet ist, kann ich nicht von einem Ansichtscontroller zum anderen wechseln.

enter image description here

+0

angeben Sie Storyboard-Kennung in der Storyboard von HomePageViewController Controller – Aditya

+0

Ja, ich bin unter Angabe der ID im Storyboard –

+0

können Sie diese einmal versuchen 'UIStoryboard (Name: "Main", Bundle: Bundle.main)' – Aditya

Antwort

1

Fügen Sie diese in AppDelegate

ersten Scheck Benutzer bereits anmelden oder nicht, wenn Login dann diesen Code ausführen

let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil) 
let redViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("respectiveIdentifier") as! ViewController 
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
appDelegate.window?.rootViewController = redViewController 
+0

Das Problem bei diesem Ansatz besteht darin, dass der Navigationscontroller im zweiten Ansichtscontroller zu Null wird. Ich verwende diesen Navigationscontroller, um einige Dinge in meinem Controller einzustellen. –

+0

@ PrabuRaj Ich kann Ihre Geschichte sehenBoard Screenshot –

+0

Ich habe den Screenshot –

1

verwenden in App Delegate und fügen Sie eine Erweiterung von UIStoryboard .

func checkForAlreadyLogin() { 
    let dashBoardScreen = UIStoryboard.dashBoardScreen() 
    let loginController = UIStoryboard.loginController() 

    if UserDefaults.standard.bool(forKey: UserDefaultValues().LOGINSTATUS){ 
     self.window!.rootViewController = dashBoardScreen 

    }else { 
     self.window!.rootViewController = loginController 
    } 

} 


public extension UIStoryboard { 
    class func mainStoryboard() -> UIStoryboard { return UIStoryboard(name: "Main", bundle: Bundle.main) } 

    class func dashBoardScreen() -> HomeViewController?{ 
     return mainStoryboard().instantiateViewController(withIdentifier: "HomeViewController") as? HomeViewController 
    } 

    internal class func loginController() -> LoginViewController?{ 
     return mainStoryboard().instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController 
    } 
} 

nennen einfach dieses checkForAlreadyLogin() Methode in 'didFinishLaunchingWithOptions'.

Denken Sie auch daran, StoryboardID im Storyboard für jeden viewController festzulegen.

+0

Können Sie meinen aktualisierten Code überprüfen? –

0

Dieser Code hat den Trick für mich getan.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 
     if let data = Locksmith.loadDataForUserAccount(userAccount: "someString") 
     { 
      if let userAccessToken = data["accessToken"] 
      { 
       if (userAccessToken as! String) != "" 
       { 
        let initialViewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "HomePageViewController") as! HomePageViewController 
        let navigationController = self.window?.rootViewController as! UINavigationController 
        navigationController.pushViewController(initialViewController, animated: true) 
       } 
      } 
     } 
     return true 
    } 
Verwandte Themen