在Storyboards中成功登录后执行segue

问题描述 投票:1回答:3

我有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];
    }
}
ios segue uistoryboardsegue
3个回答
12
投票

你需要将segue从整个UIViewController拖到下一个UIViewController,即如果转换的条件,你不应该特别将UIButton(或任何IBOutlet)连接到下一个UIViewController

像这样:


1
投票

您正在使用错误的逻辑运算符。

在if语句中用户&&以及&

为了更好地理解两者之间的区别,我建议你阅读this其他堆栈溢出答案。


0
投票

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
                }
            }
    }
© www.soinside.com 2019 - 2024. All rights reserved.