Как быстро реализовать процесс входа в систему? - PullRequest
0 голосов
/ 18 июня 2020

Я полный новичок в разработке iOS, и я создавал форму входа, которая переходит на следующую страницу методом перехода, когда я ввожу «admin» в качестве имени пользователя и пароля. Но он не работает соответствующим образом и просто переходит на контроллер secondview.

enter image description here

Для первой страницы с именем пользователя, паролем и опцией входа:

//
//  ViewController.swift
//  loginFormAssignment
//
//  Created by Piyush Kapoor on 2020-06-17.
//  Copyright © 2020 Piyush Kapoor. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var username: UITextField!
    @IBOutlet weak var password: UITextField!
    var str = "admin"
    var pass = "admin"

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func sendPressed(_ sender: UIButton) {
        if str.contains(self.username!.text!) && pass.contains(self.password!.text!){
           performSegue(withIdentifier: "toLogin", sender: self)
        }            
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destination = segue.destination as? secondViewController{
            destination.user = username.text!            
            }
    }
}
For the secondviewcontroller page which has only label to print message:
//
//  secondViewController.swift
//  loginFormAssignment
//
//  Created by Piyush Kapoor on 2020-06-17.
//  Copyright © 2020 Piyush Kapoor. All rights reserved.
//

import UIKit

class secondViewController: UIViewController {
    var user = ""
    @IBOutlet weak var resultLbl: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        resultLbl.text = user 
    }        
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Если вы уже добавили переход от LoginVC к SecondVC, тогда вы не сможете проверить условие, ввел ли пользователь что-либо или нет.

Позвольте мне объяснить вам, почему не использовать перейти сюда ...

Здесь мы выполняем действие входа в систему при нажатии кнопки. И если вы уже добавили переход к этой кнопке в secondViewController, то событие onClick будет просто performSegue для следующего viewController.

Вот почему я предпочитаю использовать NavigationController для навигации.

Перед реализацией этого решения удалите / удалите сегмент, который вы добавили в secondViewController.

У вас уже был контроллер навигации ... поэтому лучше использовать navigationController для перехода к конкретному viewController, если условие полностью заполнено.

Решение:

@IBAction func sendPressed(_ sender: Any) {
        if self.userNameText.text ?? "" == str && self.passwordText.text ?? "" == pass {
            guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else {
                print("Could not instantiate view controller with identifier of type SecondViewController")
                return
            }

            vc.user = self.userNameText.text
            self.navigationController?.pushViewController(vc, animated:true)
        }
    }

Убедитесь, что вы указали правильный идентификатор для своего secondViewController, т.е. «SecondViewController»

Здесь вы можете ...

  • передать данные,
  • проверить условие,
  • соответственно перейти к конкретному контроллеру представления.
  • остается на том же viewController, если условие не выполняется полностью.

Надеюсь, это поможет вам понять.

0 голосов
/ 18 июня 2020

проверьте идентификатор для подготовки к методу перехода и убедитесь, что у вас правильный идентификатор

 @IBAction func sendPressed(_ sender: UIButton) {
        if self.username.text ?? "" == "admin" && self.password.text ?? "" == "admin" {
           performSegue(withIdentifier: "toLogin", sender: self)
        }

    }

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toLogin" {
        if let destination = segue.destination as? secondViewController{
            destination.user = username.text!            
          }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...