ios登录屏幕问题

时间:2014-07-03 12:41:39

标签: ios json parsing login uiviewcontroller

我一直在开发包含登录屏幕的iOS应用程序。此屏幕有两个UITextField,我在其中输入用户名和密码。

现在,问题回顾如下:如果字段为空,我设置了“else if”来触发UIAlertView

UIAlertView会弹出,但是......会在下一个视图控制器中弹出。

另一个问题是......检查用户名和密码是否正确,它也会跳转到下一个View Controller。

这很奇怪,因为我设置了一个“if”条件来检查UITextFields中的文本是否必须匹配才能触发下一个视图控制器。

我已经预感到与登录操作相关联的另一个方法可能会干扰此过程。

我将发布有关登录的代码段:

- (void)btn_submit:(id)sender{
    NSString *user = self.usuari.text;
    NSString *pass = self.contrasenya.text;

    NSString * urlBase = @"http://www.v2msoft.com/clientes/lasalle/curs-ios/login.php?username=lluis&password=seguro";

    [JSONHTTPClient getJSONFromURLWithString:urlBase completion:^(id json,JSONModelError *err){

JsonUser * user = [[JsonUser alloc]initWithDictionary:json error:nil];

        if(user.succeed){
            self.user_id = user.user_id;

            [self performSegueWithIdentifier:@"Login" sender:self];
        }
        else{
            NSLog(@"error");
        }
    }];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{


    if (([self.usuari.text isEqualToString:@"lluis"]) && ([self.contrasenya.text isEqualToString:@"seguro"])){

        Supermarket * supermercat = segue.destinationViewController;
        supermercat.user_id = self.user_id;

    }

    else if (_usuari.text.length == 0 || _contrasenya.text.length == 0)
    {

        [[[UIAlertView alloc] initWithTitle:@"Alerta!"
                                    message:@"Camps buits!"
                                   delegate: nil
                          cancelButtonTitle:@"Cancelar"
                          otherButtonTitles:nil
          ] show];
    }

}

而且,“JsonUser”类的几行:

#import "JSONModel.h"

@interface JsonUser : JSONModel

@property BOOL succeed;
@property int user_id;

我认为通过URL将参数发送到服务器可能会出错,这可能会覆盖登录。

我很感激有关此事的任何帮助或建议。

2 个答案:

答案 0 :(得分:0)

prepareForSegue内进行检查已经太晚了。如果你有机会停止segue的呈现,那么这个方法将被称为shouldPresentSegue或类似的东西。在致电else if之前,请执行检查(performSegue)。

答案 1 :(得分:0)

是否将segue从提交按钮连接到下一个视图控制器或从登录视图到nextviewcontroller的segue。确保您的segue仅从登录屏幕到nextviewcontroller,而不是从提交按钮。