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)
- 为您的辅助 class 添加一个 class 和一个标识符 ViewController
- 在我的 Segue 或 Instantiate 之间选择。 (查看我在代码中的注释)
- 如果登录成功,则执行 segue 或使用实例化进行导航。
- 编码愉快。 :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
我正在尝试制作一个受密码保护的视图控制器。
到目前为止 -
已创建故事板 - 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)
- 为您的辅助 class 添加一个 class 和一个标识符 ViewController
- 在我的 Segue 或 Instantiate 之间选择。 (查看我在代码中的注释)
- 如果登录成功,则执行 segue 或使用实例化进行导航。
- 编码愉快。 :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