Practice 7–2 🆕 App 的解鎖畫面(passcode)

這次寫的練習是個類似iphone解鎖的畫面,以此類推也有點類似『計算機』的概念,peter有提供畫面供參考(如下圖),因為本人美術不是很在行,且…在coding能力不到家的情況下…還是優先專注在coding吧…所以看到概念圖就先按下『Shift』+『Command』+『4』 …先來排版先。

那既然是要做解鎖的畫面,龜毛的腦袋就浮現了一些想法,首先來個『
設定密碼的頁面』,然後『解碼的頁面』,最後進入『App內部正式的畫面』。所以就做個3頁嘗試能不能做到吧。(那…會上來寫文章當然是搞定了,所以接下來就長話短說,分享重點)順便加了一個Navigation方便換頁的時候不是下方彈起的頁面,而是往左橫移的『整頁』式頁面。

主架構就是所有的數字按鈕Button跟上方顯示的TextField的結合,如果有看上一篇UISlider的應該不陌生,就是把所有的Button全部拉到一個Action去做判斷,可以省很多事。

但上一次的判斷是每一個Slider都有拉outlet,這次從上圖可以看到。我在每一個按鈕上給他設定了Tag也剛好對應了他的數字號碼,這樣方便輸入取值的時候直接使用 textField.text = sender.tag 就會是對應到的數字了。

If判斷式:

判斷1:密碼數字上限為4位數,所以我取TextField.count 來做判斷數字上限

判斷2:倒退刪除鍵,我設定tag 10,所以如果sender.tag 是10的話,就要text.removeLast() (扣除最後一個字串)

判斷3:輸入滿4位數後,做比對的動作(設定頁面跟解鎖頁面比對的東西不同)

✷by the way 中途有請教了peter 讓圖片消失的做法,雖然很基本..但當腦子打結的時候真的會…想不到…

當密碼數量 達上限時,會出現一個X的圖案,但當我按下倒退鍵後,X的圖案就需要設定 passcodeImg.image = nil ,圖就會消失了…

至於寫法就分享下方程式碼,因為你們應該能寫的比我優質..當參考。

換頁傳值:

這邊還是要幫『一輩子的朋友』打個廣告…因為寫code寫到卡關時,就要求救最快了,這邊就順便分享他的文章~

設定頁面傳值給解鎖的頁面,我用的是performSegue,將ViewController拉Segue到下一個ViewController

程式的部分,就要把存好內容的Array傳到下一頁使用。

然後再動作內呼叫performSegue來作動

彈跳視窗Alert:

這也是練習,在設定頁面設定完後,跳出彈跳視窗設定完了,按下『OK』就會跳到解鎖頁面。

let alertController = UIAlertController(title: “Comfirm”, message: “Passcode set up!”, preferredStyle: .alert)let ok = UIAlertAction(title: “Ok”, style: .default) {(alertAction) in//換頁傳值self.performSegue(withIdentifier: "passcode", sender: alertAction)}alertController.addAction(ok)self.present(alertController, animated: true, completion:nil)

大致上主軸的部分就介紹到這邊,如果有需要,可以參考下方程式連結。

最後附上操作的Git,以上完畢。

參考連結:

--

--