2017-02-14 93 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 ==================