練習筆記46:App 的解鎖畫面(passcode)
Published in
7 min readNov 2, 2022
隔了將近五個月 終於又生出了一篇作業了🥹
先來把放在待辦清單的解鎖畫面完成~~
先做好輸入密碼的畫面
開始做功能~~
拉好各項需要的IBOutlet
//IBOutlet
@IBOutlet weak var codePhoto1: UIImageView!
@IBOutlet weak var codePhoto2: UIImageView!
@IBOutlet weak var codePhoto3: UIImageView!
@IBOutlet weak var codePhoto4: UIImageView!
@IBOutlet weak var mainPicture: UIImageView!
先宣告一個array來設定正確的解鎖密碼
再建立一個空的array來儲存使用者輸入的密碼
在這邊也建立了一個變數buttonCounter 想用來計算點選數字鍵的次數 並在後面的功能設定中作為條件判斷的依據
//正確密碼
let password = [0,0,0,0]
//記憶已輸入密碼
var enterPassword = [Int]()
//點選數字鍵次數
var buttonCounter = 0
接著將數字鍵拉IBAction 並設定點選數字鍵後的功能:
點選一次數字鍵 buttonCounter就會+1
利用buttonCounter的數值就可以依序顯示輸入密碼的小圖
並且將點選的數字加入enterPassword的array
這裡我將每個數字鍵的tag輸入對應的數字
就可以用sender.tag讀取數值 加入enterPassword
當buttonCounter為4時就會判斷輸入的數字跟正確密碼相不相符
並跳出對應的訊息
//點選數字鍵
@IBAction func showPicture(_ sender: UIButton) {
buttonCounter += 1
enterPassword.append(sender.tag)
switch buttonCounter{
case 1:
codePhoto1.image = UIImage(named: "pocha1")
case 2:
codePhoto2.image = UIImage(named: "pocha3")
case 3:
codePhoto3.image = UIImage(named: "pocha2")
case 4:
codePhoto4.image = UIImage(named: "pocha4")
default:
break
}
if buttonCounter == 4{
if enterPassword == password{
correctMessage()
}else{
tryAgainMessage()
}}
設定密碼正確與錯誤時的畫面
//密碼正確的彈跳視窗
func correctMessage(){
mainPicture.image = UIImage(named: "pochaokok")
let message = UIAlertController(title: "正確", message: "已成功解鎖", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default)
message.addAction(action)
present(message, animated: true)
}
//密碼錯誤的彈跳視窗
func tryAgainMessage(){
mainPicture.image = UIImage(named: "pochaQQ")
let message = UIAlertController(title: "錯誤", message: "請再試一次", preferredStyle: .alert)
let action
= UIAlertAction(title: "try again", style: .default,handler: {(action:UIAlertAction!)-> Void in
self.reset()})
message.addAction(action)
present(message, animated: true)
}
並設定清除鍵跟back鍵的功能
//畫面重設
func reset(){
mainPicture.image = UIImage(named: "40d5-kracxeq8565328")
buttonCounter = 0
enterPassword = []
codePhoto1.image = UIImage(named: "pocha 1-2")
codePhoto2.image = UIImage(named: "pocha5")
codePhoto3.image = UIImage(named: "pocha2-2")
codePhoto4.image = UIImage(named: "pocha4-2")
}
//back鍵
@IBAction func back(_ sender: UIButton) {
if buttonCounter >= 1{
buttonCounter -= 1
enterPassword.remove(at: buttonCounter)}
switch buttonCounter{
case 0:
codePhoto1.image = UIImage(named: "pocha 1-2")
case 1:
codePhoto2.image = UIImage(named: "pocha5")
case 2:
codePhoto3.image = UIImage(named: "pocha2-2")
case 3:
codePhoto4.image = UIImage(named: "pocha4-2")
default:
break
}
}
//清除鍵
@IBAction func clearAll(_ sender: UIButton) {
reset()
}
完成~~