APP解鎖畫面
performSegue, button(Tag), removeLast(), switch, alert
成品:大家都弄很可愛走點不同路線 ! 五条很帥但也幫推宿儺~
▲已學(體會)到 switch 美好,便直接捨棄 if else :P
▲以為小作業結果想很久還是不知怎做,無可奈何參考了學長.同學的…
前置作業
▲構思主題配置 Storyboard
▲加 View Controller,為仿真做首頁圖實際無作用(純粹ImageView)
▲每個數字按鈕的 Tag 填入和按鈕一樣數值(0~9) (圖一)
▲拉 Segue (圖二) ,設全螢幕 (圖三),替 Segue 取名 (圖四)
拉 IBOutlet
@IBOutlet weak var mainImage: UIImageView!@IBOutlet weak var firstFingerImage: UIImageView!
@IBOutlet weak var secondFingerImage: UIImageView!
@IBOutlet weak var thirdFingerImage: UIImageView!
@IBOutlet weak var forthFingerImage: UIImageView!@IBOutlet weak var ryomenTalkLabel: UILabel!
@IBOutlet weak var remindLabel: UILabel!
設置變數 / 常數 :輸入密碼與正確密碼為字串
var count = 0var enter = “”
let passcode = “9171”
拉 IBAction: 0~9 按鈕全拉至 enter Action,系統不接受名稱取作delete
@IBAction func enter(_ sender: UIButton) {
}
@IBAction func change(_ sender: UIButton) {
}
輸入密碼
▲每按一次數字按鈕 count +1,各顯示圖並填入密碼(意指第幾個密碼)
▲按哪一個數字會經 sender.tag 傳入 (先前 Tag 填的數字)
▲如輸入與密碼不符出現警告訊息且更換主圖及文字描述
▲按下警告訊息 okAction 後連動,換圖與文字外其餘恢復初始值
▲密碼相符時用以下程式切換頁面,無按鈕等可觸及狀況時很好用
➞ self.performSegue(withIdentifier: “homepageSegue”, sender:self)
➞ func performSegue(withIdentifier identifier: String, sender: Any?)
@IBAction func enter(_ sender: UIButton) {
count += 1
switch count {
case 1:
firstFingerImage.isHidden = false
enter += “\(sender.tag)”
case 2:
secondFingerImage.isHidden = false
enter += “\(sender.tag)”
case 3:
thirdFingerImage.isHidden = false
enter += “\(sender.tag)”
default:
forthFingerImage.isHidden = false
enter += “\(sender.tag)” if enter != passcode {
mainImage.image = UIImage(named: “Ryomen2”)
ryomenTalkLabel.text = “找死 ?”
remindLabel.isHidden = true let controller = UIAlertController(title: “密碼錯誤”, message:
nil, preferredStyle: .alert)
let okAction = UIAlertAction(title: “被識破啦? 我這就去拿真貨!”,
style: .default) {[self](_) in mainImage.image = UIImage(named: “Ryomen6”)
ryomenTalkLabel.text = “鮮少有人如此,膽子不小嘛!”
remindLabel.isHidden = false
firstFingerImage.isHidden = true
secondFingerImage.isHidden = true
thirdFingerImage.isHidden = true
forthFingerImage.isHidden = true
count = 0
enter = “”
}
controller.addAction(okAction)
present(controller, animated: true, completion: nil) } else {
self.performSegue(withIdentifier: “homepageSegue”,
sender:self)
}
}
}
刪除 / 更改密碼
▲每按一次 count -1 ,消失一個圖,刪除一個密碼(字串)
▲removeLast()可移除或回復物件的最後元素,String 可用但 Int 無法
➞@discardableResult mutating func removeLast() -> Self.Element
▲case 1 不直接寫 default 因怕按超過 4 次會出錯
@IBAction func change(_ sender: UIButton) {
switch count {
case 4:
count -= 1
forthFingerImage.isHidden = true
enter.removeLast()
case 3:
count -= 1
thirdFingerImage.isHidden = true
enter.removeLast()
case 2:
count -= 1
secondFingerImage.isHidden = true
enter.removeLast()
case 1:
count -= 1
firstFingerImage.isHidden = true
enter.removeLast()
default:
break
}
}
完整程式碼