解鎖畫面

看似簡單要理解的東西還是好多!

--

import UIKitclass ViewController: UIViewController {@IBOutlet weak var imageOne: UIImageView!@IBOutlet weak var imageTwo: UIImageView!@IBOutlet weak var imageThree: UIImageView!@IBOutlet weak var imageFour: UIImageView!

//利用struct建立新型別

struct defaultSet{static var image = UIImage(named: “image”)}

設變數&建立clearPassword function

var password = “”var finalCode = “”var inputNum = “”func clearPassword(){imageOne.image = defaultSet.imageimageTwo.image = defaultSet.imageimageThree.image = defaultSet.imageimageFour.image = defaultSet.imagepassword = “”}func correctOrWrong(){if password == “0310”{let alert = UIAlertController(title: “完全正確!”, message: “Good!”, preferredStyle: .alert)let action = UIAlertAction(title: “OK!”, style: .cancel, handler: nil)alert.addAction(action)present(alert, animated: false, completion: clearPassword)}else{let alert = UIAlertController(title: “錯誤!”, message: “答案錯了”, preferredStyle: .alert)let action = UIAlertAction(title: “再試一次”, style: .cancel, handler: nil)alert.addAction(action)present(alert, animated: false, completion: clearPassword)}}func showPasswordCount(){if password.count == 0 {imageOne.image = defaultSet.imageimageTwo.image = defaultSet.imageimageThree.image = defaultSet.imageimageFour.image = defaultSet.image}else if password.count == 1 {imageOne.image = UIImage(named:”flower1")imageTwo.image = defaultSet.imageimageThree.image = defaultSet.imageimageFour.image = defaultSet.image}else if password.count == 2 {imageOne.image = UIImage(named:”flower1")imageTwo.image = UIImage(named:”flower2")imageThree.image = defaultSet.imageimageFour.image = defaultSet.image}else if password.count == 3 {imageOne.image = UIImage(named:”flower1")imageTwo.image = UIImage(named:”flower2")imageThree.image = UIImage(named:”flower1")imageFour.image = UIImage(named:”image”)}else if password.count == 4 {imageOne.image = UIImage(named:”flower1")imageTwo.image = UIImage(named:”flower2")imageThree.image = UIImage(named:”flower1")imageFour.image = UIImage(named:”flower2")correctOrWrong()}}

將數字都拉在同一個button比起一個個拉簡易

@IBAction func inputNumer(_ sender: UIButton) {if let inputText = sender.titleLabel?.text ,password.count<4{password.append(inputText)print(password)showPasswordCount()}}func removeInputNum(){if(password.count>0 && password.count<4){password.removeLast()}}func renderDefaultPic(){var inputCount = password.count+1switch inputCount{case 3:imageThree.image = defaultSet.imagecase 2:imageTwo.image = defaultSet.imagecase 1:imageOne.image = defaultSet.imagedefault:restartTyping()}}func restartTyping(){imageOne.image = defaultSet.imageimageTwo.image = defaultSet.imageimageThree.image = defaultSet.imageimageFour.image = defaultSet.imageinputNum = “”}@IBAction func deletePassword(_ sender: UIButton) {removeInputNum()renderDefaultPic()print(password)}}

寫了兩個版本,放上好理解的這個。

卡了很久,謝謝批特跟andy同學的指導~

一開始用dropLast() 發現他是只能刪除陣列中的數值,並且是傳一個新的陣列。

還有設finalcode卻沒有給他值,怎麼樣都刪不掉XD

github:

--

--