在Storyboards中login成功后执行segue
我有2个UITextFields
,其中一个用于login,另一个用于密码。
只有login是“成功”的,我想执行Segue
Push
到另一个View Controller
。 但是,当我触摸button时,直接将视图推送到另一个视图,而不检查条件。
在StoryBoard中,我从UIButton拖动到我想要推送的视图控制器,用于通过push选项创buildsegue。
这是我的代码:
- (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]; } }
您需要将整个UIViewController
的segue拖到下一个UIViewController
,也就是说,如果过渡的条件,则不应该将UIButton
(或任何IBOutlet)连接到下一个UIViewController
。
像这样:
您正在使用错误的逻辑运算符。
用户&&
而不是在你的if语句中。
为了更好地理解两者之间的差异,我build议你阅读这个其他堆栈溢出的答案。
Swift 4你仍然可以将UIButton链接到View Controller并创build一个Segue。 如果您的login成功,则在您的closures中调用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 } } }