orh*_*tlu 2 uistoryboard segue uistoryboardsegue swift alamofire
我正在尝试学习Swift,我想要做的是创建简单的登录页面.每当用户单击登录按钮时,我都会在shouldPerformSegueWithIdentifier中向我的Web服务发出请求,以检查用户名和密码是否正确.我不想使用IBAction(如touchupinside等).解析来自Web服务的响应后,我检查Web服务响应是否有任何错误(如用户名无效).如果有任何错误,我想通过返回false来阻止segue.但我无法在Alamofire内部回归虚假.那我该怎么处理呢?这是我的代码:
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
if identifier == "segueLoginToMainPage" {
//...
//Checking if text fields are filled or not
else {
let callURL : String = CONFIG.BASE_URL + "user/login"
let parameters = [HTTPParamNames.FIELD_USER_NAME : self.txtUserName.text,
HTTPParamNames.FIELD_PASSWORD : self.txtPassword.text]
Alamofire.request(.POST, callURL, parameters: parameters)
.responseJSON { (_,_,JSON,_) in
var returnedData = JSON as NSDictionary
if returnedData["status"] as String == "error" {
//thats what i want to do
return false
}
}
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
但我不能返回false,因为它是异步的.我在stackoverflow中发现了一些像这样的问题,但答案并不是我想要的.谢谢!
你根本不应该尝试使用异步方法shouldPerformSegueWithIdentifier.相反,你应该:
从登录按钮中删除segue本身.
在视图控制器之间添加segue.具体来说,control-drag从原始场景的视图控制器图标(在Xcode 6+中,此图标位于场景上方的栏中,在早期版本的Xcode中,此图标位于场景下方的栏中)到目标场景.
给这个新的segue一个"故事板标识符".
将登录按钮连接到某个IBAction功能.
在该IBAction函数中,执行异步网络请求,如果登录成功,则以编程方式performSegueWithIdentifier提供您在步骤3中指定的故事板标识符.
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |