Swift-受密码保护的视图控制器

时间:2019-03-11 15:54:42

标签: ios swift passwords segue

另一个快速的初学者在这里。

基本上是为了制作受密码保护的视图控制器。

到目前为止-

创建的故事板- 在viewcontroller上-创建硬编码的登录- 如果成功则打印到控制台。

文本字段等...

@IBOutlet weak var untext: UITextField!

@IBOutlet weak var pwtext: UITextField!


let username = "admin"
let password = "adminpw"

override func viewDidLoad() {
    super.viewDidLoad()
    pwtext.isSecureTextEntry = true
}

@IBAction func loginbtn(_ sender: Any) {
    if untext.text == username && pwtext.text == password
    {
        print("log in succesful")
    }   else {
        print("log in failed")
    }

}

我遇到的问题是,一旦按下登录按钮,无论成功与否,它都会带我进入管理页面。

我如何在屏幕上打印通知-如果不成功并保留在当前视图控制器上,如果成功,则带我去管理员视图控制器?

谢谢

2 个答案:

答案 0 :(得分:0)

假设您使用segues进行导航,则可以放置“通用” segue(从控制器中拖动,而不是拖动其中的任何控件)并为其分配ID(在Storyboard中,segue的属性检查器中的标识符)。之后,您可以使用代码有条件地从父控制器类调用segue:

if passwordCorrect {
    performSegue(withIdentifier: "SegueID", sender: nil)
}

答案 1 :(得分:0)

您可以使用segue或InstantiateViewController。但是在此示例中,我将使用InstantiateViewController(图像)。 (但评论了如何使用segue)

  1. 向您的辅助ViewController添加类和标识符
  2. 在我的“ Segue”或“ Instantiate”之间进行选择。 (检查我在代码中的注释)
  3. 如果登录成功,则执行segue或使用实例化进行导航。
  4. 编码愉快。 :D

但是首先,让我们看一下您提供的代码。

@IBAction func loginbtn(_ sender: Any) 
{
     if untext.text == username && pwtext.text == password
     {
         print("login succeeded")
         //1. using instantiateViewController
         if let storyboard = storyboard
         {
             //Check my image below how to set Identifier etc.
             // withIdentifier = Storyboard ID & "ViewController" = Class 
             let vc = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
             self.present(vc, animated: false, completion: nil)
         }
         //2. Use segue (I'll wrap this with a comment incase you copy)
         //self.performSegue(withIdentifier: "SegueID", sender: self)
     }
     else
     {
         //Setting up an "AlertController"
         let alert = UIAlertController(title: "Login failed", message: "Wrong username / password", preferredStyle: UIAlertController.Style.alert)
         //Adding a button to close the alert with title "Try again"
         alert.addAction(UIAlertAction(title: "Try again", style: UIAlertAction.Style.default, handler: nil))
         //Presentating the Alert
         self.present(alert, animated: true, completion: nil)
     }
}

点击ViewController上的黄点(在ViewController上您希望登录页面进入的位置)

image 1

像我一样单击图标。 (蓝色),并设置“班级+故事板ID”。

image 2

  

注意!如果您想使用segue,请确保您在ViewController(Login)和ViewController1之间建立了连接