Как перейти на второй ViewController после завершения проверки данных - PullRequest
0 голосов
/ 17 мая 2018

Я создаю небольшое приложение, которое проверяет имя пользователя и пароль из plist и показывает профиль пользователя в другом ViewController или (следующем экране).

  • Я добавил кнопку входа, которая проверяет имя пользователя и пароль, введенные пользователем, с данными, хранящимися в Plist (список свойств).
  • Я также добавил условие для отображения предупреждающего сообщения, когда пользователь ввел неправильный пароль или успешно вошел в систему.
  • Я создал другой ViewController и подключился к основному ViewController через кнопку входа в систему. Моя проблема заключается в том, что когда я нажимаю кнопку LOGIN, он автоматически переходит к следующему контроллеру представления без проверки пароля имени пользователя, а также не показывает предупреждение. как перейти к следующему ViewController после завершения проверки и просмотра предупреждений.

Мне нужен код в Objective-C

- (IBAction)submitButton:(UIButton *)sender {
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"profileDetails" ofType:@"plist"]];
    NSString *usernameentered = dict[@"user"][@"username"];
    NSString *passwordentered = dict[@"user"][@"password"];
    if ([self.username.text isEqualToString:usernameentered] && [self.password.text isEqualToString:passwordentered]) {
        NSLog(@"login sucessfull");
        UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Attention"
                                                                       message:@"LOGIN SUCCESS"
                                                                preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OKAY" style:UIAlertActionStyleDefault
                                                              handler:^(UIAlertAction * action) {}];
        [alert addAction:defaultAction];
        [self presentViewController:alert animated:YES completion:nil];


    }else if ([self.username.text isEqual:@""] && [self.password.text isEqual:@""]) { UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Attention"
                                                                         message:@"PLEASE ENTER Valid EMAIL AND PASSWORD"
                                                                  preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"Okay ! Got it" style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
    }

}

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Я думаю, что вы использовали 'show' segue при нажатии кнопки входа в систему tap. Вам нужно использовать собственный segue для этого.Вы можете настроить пользовательский переход, как показано ниже.

Шаг 1:

  • Передать пользовательский переход текущему контроллеру целевому контролле.Вы также можете увидеть на изображении ниже.

enter image description here

enter image description here

Шаг 2 - Дайте любой уникальный идентификатор для перехода.Вы также можете увидеть на изображении ниже.

enter image description here

Затем используйте код ниже для перенаправления, когда учетные данные действительны.

[self performSegueWithIdentifier:@"NextVC" sender:self];
0 голосов
/ 17 мая 2018

enter image description here

- (IBAction)submitButton:(UIButton *)sender {

 //Get stored username and password
 NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"profileDetails" ofType:@"plist"]];
 NSString *usernameentered = dict[@"user"][@"username"];
 NSString *passwordentered = dict[@"user"][@"password"];

 if ([self.username.text isEqual:nil] || [self.username.text isEqual:@""]) {

    //Show alert for empty username
 }
 else if ([self.password.text isEqual:nil] || [self.password.text isEqual:@""]) {

    //Show alert for empty username
 }
 else if (![self.username.text isEqualToString:usernameentered]) {

    //Show alert for wrong username
 }
 else if (![self.password.text isEqualToString:passwordentered]) {

    //Show alert for wrong password
 }
 else {


    //All validation is right.
    //Move to other Viewcontroller 

    UIStoryboard *main = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    NSString *Identifier = @"ViewController"; //Same as in storyboard

    UIViewController *vc = [main instantiateViewControllerWithIdentifier:Identifier];
    [self.navigationController pushViewController:vc animated:true]; //If you want to push
    //[self.navigationController presentViewController:vc animated:YES completion:nil] //If you want to present
 }
}
0 голосов
/ 17 мая 2018

"Я создал другой контроллер представления и подключаюсь к контроллеру основного вида с помощью кнопки входа в систему"

Если вы используете segue для навигации, то вы должны написать код внутри prepareForSegue или shouldPerformSegueWithIdentifier метод.В противном случае вы можете перейти к ViewController через код внутри действия кнопки отправки.

Попробуйте написать этот код в методе shouldPerformSegueWithIdentifier, он должен работать

...