2017-02-14 96 views
0

我有一個建在一個叫LoginViewController.swift斯威夫特3故事板導航

用戶登錄後文件中的登錄頁面,我想送他們去上內置TabBarController enter image description here

一個新的故事板

項目2,這是中間的一個鏈接到一個名爲landingViewController.swift包含文件:

import UIKit 

class landingViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 

在我LoginViewController,我想導航到新的故事板的功能的API的一部分,我我做了一個紀念nt區域向您展示。在第二故事板作爲初始視圖控制器

  • 成功登錄後

    //MARK: -API Request 
    func logintoUnicityLife(username:String , password:String){ 
        let params = ["username": username, 
            "password": password] 
    
        print("login API called - \(params)") 
    
        Alamofire.request(URL(string: "\(AppData.sharedData.APIUrl)/login")!, 
             method: .get, 
             parameters: params, 
             headers: AppData.sharedData.headerParam).validate().responseJSON(completionHandler: {(response) -> Void in 
             print("login API done - \(response.response?.statusCode)") 
    
             guard response.result.isSuccess else { 
              print("API fail: \(response.error.debugDescription)") 
              return 
             } 
             guard let value = response.result.value as? Dictionary<String, Any>, 
              let result = value["result"] as? Dictionary<String, String> else { 
               print(response) 
               return 
             } 
    
             self.userDetails = result 
             print(self.userDetails) 
    
             // =========== NAVIGATE TO THE NEW STORYBOARD HERE ============= 
    
             // =========== CODE GOES ABOVE HERE ================== 
    
             }) 
    } 
    
  • +0

    您需要在加載新的故事板的主窗口,登錄後 –

    +0

    我怎樣才能做到這一點? –

    回答

    0
    func logintoUnicityLife(username:String , password:String){ 
         let params = ["username": username, 
             "password": password] 
    
         print("login API called - \(params)") 
    
         Alamofire.request(URL(string: "\(AppData.sharedData.APIUrl)/login")!, 
              method: .get, 
              parameters: params, 
              headers: AppData.sharedData.headerParam).validate().responseJSON(completionHandler: {(response) -> Void in 
              print("login API done - \(response.response?.statusCode)") 
    
              guard response.result.isSuccess else { 
               print("API fail: \(response.error.debugDescription)") 
               return 
              } 
              guard let value = response.result.value as? Dictionary<String, Any>, 
               let result = value["result"] as? Dictionary<String, String> else { 
                print(response) 
                return 
              } 
    
              self.userDetails = result 
              print(self.userDetails) 
    
              // Tabbarcontrolloer set as initial ViewController 
              let tabVC = UIStoryboard(name:"<Your Storyboard file name>", bundle:nil).instantiateInitialViewController() 
              (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController = tabVC 
    
              // =========== NAVIGATE TO THE NEW STORYBOARD HERE ============= 
    
              // =========== CODE GOES ABOVE HERE ================== 
    
              }) 
        } 
    
    +0

    我認爲這部分工作,因爲我看到切換到黑屏的麻煩。我怎樣才能解決這個問題?我應該注意什麼? –

    +0

    我需要設置初始視圖謝謝! –

    0
    1. 組選項卡的視圖控制器,執行該代碼

      let storyBoard = UIStoryboard(name:"second", bundle:nil) // second storyboard name is given as second 
      let tabVC = storyBoard.instantiateInitialViewController() 
      (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController = tabVC 
      

    OR

    1. 集故事情節ID在第二故事板
    2. 成功登錄後,TabView的控制器,執行該代碼

      let storyBoard = UIStoryboard(name:"second", bundle:nil)// second storyboard name is given as second 
      let tabVC = storyBoard.instantiateViewController(withIdentifier: "tabVc") // storyboard id of tab view controller is given as tabVc 
      (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController = tabVC 
      
    0

    一種方法是建立在你的登錄故事板分鏡參考,在LoginViewController和故事板參考之間創建一個Show segue,給它一個「fromLoadingToMain」的標識符,如下所示:

    ,然後在你的代碼,只需做:

    // =========== NAVIGATE TO THE NEW STORYBOARD HERE ============= 
    self.performSegue(withIdentifier: "fromLoadingToMain", sender: nil) 
    // =========== CODE GOES ABOVE HERE ==================