另一个快速的初学者在这里。
基本上是为了制作受密码保护的视图控制器。
到目前为止-
创建的故事板- 在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")
}
}
我遇到的问题是,一旦按下登录按钮,无论成功与否,它都会带我进入管理页面。
我如何在屏幕上打印通知-如果不成功并保留在当前视图控制器上,如果成功,则带我去管理员视图控制器?
谢谢
答案 0 :(得分:0)
假设您使用segues进行导航,则可以放置“通用” segue(从控制器中拖动,而不是拖动其中的任何控件)并为其分配ID(在Storyboard中,segue的属性检查器中的标识符)。之后,您可以使用代码有条件地从父控制器类调用segue:
if passwordCorrect {
performSegue(withIdentifier: "SegueID", sender: nil)
}
答案 1 :(得分:0)
您可以使用segue或InstantiateViewController。但是在此示例中,我将使用InstantiateViewController(图像)。 (但评论了如何使用segue)
但是首先,让我们看一下您提供的代码。
@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上您希望登录页面进入的位置)
像我一样单击图标。 (蓝色),并设置“班级+故事板ID”。
注意!如果您想使用segue,请确保您在ViewController(Login)和ViewController1之间建立了连接