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

Swift - password protected view controller

我正在尝试制作一个受密码保护的视图控制器。

到目前为止 -

已创建故事板 - on 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")
    }

}

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

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

假设您使用 segues 进行导航,您可以放置​​一个 "general purpose" segue(从您的控制器中拖动,而不是其中的任何控件)并为其分配一个 ID(Storyboard 中 segue 的属性检查器中的标识符).之后,您可以使用您的代码有条件地从父控制器 class 调用 segue:

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

您可以使用 segue 或实例化 ViewController。但在这个例子中,我将使用 instantiateViewController (Images)。 (但评论了如何使用 segue)

  1. 为您的辅助 class 添加一个 class 和一个标识符 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 您希望登录页面转到的位置)

像我一样点击图标。 (蓝色)并设置一个 Class + Storyboard ID.

NOTE! IF you wanna use a segue, make SURE you have a connection between ViewController(Login) and ViewController1