我使用這個代碼在用戶登錄之後轉變的視圖控制器:錯誤時,編程轉換視圖控制器
let controller = self.storyboard?.instantiateViewControllerWithIdentifier("messagesVC") as! messagesViewController
self.presentViewController(controller, animated: true, completion: nil)
的代碼,當我在編輯器中時,它不會引起任何錯誤,但運行什麼也沒有發生,我隨此錯誤返回:
2015-11-19 12:06:08.835 collaboration[8788:70890] Warning: Attempt to present on which is already presenting
視圖控制器「messagesViewController」存在,它的故事板場景都有標識「messagesVC」。我被困在什麼是錯誤的...如果你知道請幫助我。
感謝
登錄按鈕:
@IBAction func loginButton(sender: UIButton) {
let savedUsername = NSUserDefaults.standardUserDefaults().stringForKey("username")! as String
if savedUsername == "" {
if usernameInput.text != "" && passwordInput.text != "" {
let usernameTextFieldString = usernameInput.text! as String
let passwordTextFieldString = passwordInput.text! as String
let myUrl = NSURL(string: "http://127.0.0.1/bubble/login.php?username=\(usernameTextFieldString)&password=\(passwordTextFieldString)&secretKey=kjdfb4u7bksSDDF44wlksdnw33j4")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
dispatch_async(dispatch_get_main_queue()) {
let userInfo = responseString!.componentsSeparatedByString("9254203598")
let userInfoCount = userInfo.count
if userInfoCount == 4 {
let userInfoId = userInfo[1] as String
let userInfoUsername = userInfo[2] as String
let userInfoPassword = userInfo[3] as String
NSUserDefaults.standardUserDefaults().setObject(userInfoId, forKey: "id")
NSUserDefaults.standardUserDefaults().setObject(userInfoUsername, forKey: "username")
NSUserDefaults.standardUserDefaults().setObject(userInfoPassword, forKey: "password")
NSUserDefaults.standardUserDefaults().synchronize()
let keyId = NSUserDefaults.standardUserDefaults().stringForKey("id")
let keyUsername = NSUserDefaults.standardUserDefaults().stringForKey("username")
let keyPassword = NSUserDefaults.standardUserDefaults().stringForKey("password")
if keyId != nil && keyUsername != nil && keyPassword != nil {
self.sendAlert("Success", message: "You have been logged in successfully")
self.usernameInput.text = ""
self.passwordInput.text = ""
self.loginStatus()
//VIEW CONTROLLER TRANSITION TO FIX
let controller = self.storyboard?.instantiateViewControllerWithIdentifier("messagesVC") as! messagesViewController
self.presentViewController(controller, animated: true, completion: nil)
}
} else {
self.sendAlert("Error", message: "Unable to login")
}
}
}
}
task.resume()
loginStatus()
} else {
sendAlert("Login Invalid", message: "The username and password you entered are not associated with an account")
}
} else {
self.sendAlert("Error", message: "You must be logged in to log out")
}
}
修改後的代碼:
@IBAction func loginButton(sender: UIButton) {
let savedUsername = NSUserDefaults.standardUserDefaults().stringForKey("username")! as String
if savedUsername == "" {
if usernameInput.text != "" && passwordInput.text != "" {
let usernameTextFieldString = usernameInput.text! as String
let passwordTextFieldString = passwordInput.text! as String
let myUrl = NSURL(string: "http://127.0.0.1/bubble/login.php?username=\(usernameTextFieldString)&password=\(passwordTextFieldString)&secretKey=kjdfb4u7bksSDDF44wlksdnw33j4")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
dispatch_async(dispatch_get_main_queue()) {
print(responseString)
let userInfo = responseString!.componentsSeparatedByString("9254203598")
let userInfoCount = userInfo.count
if userInfoCount == 4 {
let userInfoId = userInfo[1] as String
let userInfoUsername = userInfo[2] as String
let userInfoPassword = userInfo[3] as String
NSUserDefaults.standardUserDefaults().setObject(userInfoId, forKey: "id")
NSUserDefaults.standardUserDefaults().setObject(userInfoUsername, forKey: "username")
NSUserDefaults.standardUserDefaults().setObject(userInfoPassword, forKey: "password")
NSUserDefaults.standardUserDefaults().synchronize()
let keyId = NSUserDefaults.standardUserDefaults().stringForKey("id")
let keyUsername = NSUserDefaults.standardUserDefaults().stringForKey("username")
let keyPassword = NSUserDefaults.standardUserDefaults().stringForKey("password")
if keyId != nil && keyUsername != nil && keyPassword != nil {
self.sendAlert("Success", message: "You have been logged in successfully")
self.usernameInput.text = ""
self.passwordInput.text = ""
NSUserDefaults.standardUserDefaults().stringForKey("username")
//self.loginStatus()
//VIEW CONTROLLER TRANSITION TO FIX
let controller = self.storyboard?.instantiateViewControllerWithIdentifier("messagesVC") as! messagesViewController
self.presentViewController(controller, animated: true, completion: nil)
}
} else {
print("Unable to login")
//self.sendAlert("Error", message: "Unable to login")
}
}
}
}
task.resume()
//loginStatus()
} else {
//sendAlert("Login Invalid", message: "The username and password you entered are not associated with an account")
}
} else {
//sendAlert("Error", message: "You must be logged in to log out")
}
}
你在哪裏調用該代碼?你是在視圖控制器出現時還是在之前調用它?我們需要更多的背景。 – JAL
我在用戶將文本輸入到兩個文本字段後調用它,並按下「登錄」按鈕。這是你需要的嗎?謝謝 –
是的,請發佈登錄按鈕的完整操作。 – JAL