簡體   English   中英

Swift:成功登錄后轉到下一個屏幕

[英]Swift: Segue to next screen when successfully login

我在嘗試着:
1.登錄
2.解析響應
3.打印響應
4.選擇到下一個屏幕

let task = session.dataTaskWithRequest(request) { (data, responseData, error) -> Void in
    if let response = responseData as? NSHTTPURLResponse {
        statusCode = response.statusCode
        print("Response code: \(statusCode)")
    }

    do {
        if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary {
            if let data = json["data"] as? NSDictionary {
                if let user = data["user"] as? NSDictionary {
                    self.loggedUser = User(resp: user)
                    self.printData(self.loggedUser!)
                }
            }
        }
    } catch {
        print(error)
        err = error
    }

    if(statusCode != 200) {
        let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("Error could not parse JSON: '\(jsonStr)'")
    } else {
        //print("Everything Looks good: \(responseData)")
        self.shouldPerformSegueWithIdentifier("showHomeController", sender: self)
    }
}

private func printData(user: User) {
    let id = user.id as Int
    print("id: \(id)")
    print("Parent: \(loggedUser?.userType)")
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showHomeController" {
        let homeViewController = segue.destinationViewController as! HomeViewController
        homeViewController.user = self.loggedUser
    }
}

它不能以相同的順序工作。 解析數據之前,代碼正在選擇進入下一個屏幕。 為什么會這樣呢?

用performSegueWithIdentifier替換shouldPerformSegueWithIdentifier

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM