我有2个UITextFields
,其中一个用于登录,另一个用于密码。
只有登录是“成功的”,我想用Segue
执行Push
到另一个View Controller
。但是当我触摸按钮时,直接将视图推送到另一个视图而不检查条件。
在StoryBoard中,我将UIButton拖动到我想要推送的View Controller,用于创建带有push选项的segue。
这是我的代码:
- (IBAction)buttonLogin:(id)sender {
if (([self.textFieldLogin.text isEqualToString:@"User"]) && ([self.textFieldPassword.text isEqualToString:@"1515"])){
[self performSegueWithIdentifier:@"SegueLogin" sender:self];
}else{
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"User wrong"
message:@"Fill up again the user info"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:@"Cancel", nil];
[alert show];
}
}
你需要将segue从整个UIViewController
拖到下一个UIViewController
,即如果转换的条件,你不应该特别将UIButton
(或任何IBOutlet)连接到下一个UIViewController
。
像这样:
Swift 4您仍然可以将UIButton链接到View Controller并创建Segue。如果您的登录成功,则在您的闭包内调用self.performSegue。像这样......
@IBAction func loginButtonPressed(_ sender: AnyObject) {
authenticateUser(email: email.text!, password: password.text!)
}
func authenticateUser(email: String, password: String){
# Building your loginUrl goes here
Alamofire.request(loginUrl!,
method: .post,
parameters: nil,
encoding: JSONEncoding.default,
headers: headers)
.validate()
.responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
let apiResponse : JSON = JSON(response.result.value!)
print("Now Performing Segue on IBAction Pressed")
self.performSegue(withIdentifier: "goToDashboard", sender: self)
break
case .failure(_):
print(response.result.error)
break
}
}
}