在Storyboards中成功登录后执行segue

时间:2013-12-19 19:22:23

标签: ios segue uistoryboardsegue

我有2个UITextFields,其中一个用于登录,另一个用于密码。

只有当登录“成功”时,我才会将SeguePush一起执行到另一个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];
    }
}

3 个答案:

答案 0 :(得分:12)

您需要将segue从整个UIViewController拖到下一个UIViewController,即您不应该将UIButton(或任何IBOutlet)专门连接到下一个UIViewController {{1}}如果转换是有条件的。

像这样:

enter image description here

答案 1 :(得分:1)

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

在您的if语句中

用户&&而不是&

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

答案 2 :(得分: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
                }
            }
    }