Swift3 從入門到精通Day30:快速撥號app(1/2)

Alice
Daily Swift
Published in
6 min readJul 30, 2017

日期:7/30(日)

作品:快速撥號app(明天寫完會補上demo)

學習內容:core data

core data要打勾

如何讓程式只支援直向

刪除left與right
最後剩下bottom home button

上面是iphone的轉向下面是ipad的轉向也做相同的步驟

最後剩下這樣後按下command+S

畫面設計

在下面加上一個Button設定兩側寬度為零
在下面加上一個Button設定上左右寬度為零 constrain to margins不要勾選
把buttom拉到View選擇equal hight後 在比例的地方選擇0.2
把buttom設定紅色後把文字刪除
每個按鈕的auto layout把上左右都改為0
下面的按鈕用control連結到第一個按鈕後選擇Equal Height 最後會像右圖

要做出目標這樣的字原本的UI button沒有辦法做到

我們要自己寫一個類別

建立一個cocoa touch class 命名BigLabelButton

BigLabelButton.swift程式碼
ViewController程式碼,做完之後按下play
剛剛解了一個bug其實就是打錯字
設定按鈕按壓的顏色變化
按鈕改Tag標籤 第一個按鈕寫1(然後導致我crash,正確應該第一個按鈕是0)
然後出現錯誤了 然後去複製老師的程式碼還是一樣的錯誤

我找了youtube的解法Swift:Thread 1 EXC BAD INSTRUCTION error : unexpectedly found nil while unwrapping an Optional value

很厲害是一個11歲小朋友,想一想後改把!改成=就可以builid成功了

然後又出現新的crash啦崩潰!

後來我把tag-1就能正常運作了XD

後來我把tag-1就能正常運作了,不過我就想應該是我剛剛tag影片看錯了吧!回頭check一下,真的第一個label是要命名0(程式的邏輯)!

各種crash也是練習debug的機會,不過這些bug都是我自己製造的。

按鈕長按功能

1.可以使用Long Press Gesture Recognizer再一個一個連結到程式碼

2.在storyboard上直接寫:因為按鈕太多了

3.
長按顯示Hello
把print(“Hello”改成”Button:\(sender.view?.tag)” 就能知道是按第幾顆按鈕
設定UI View跟文字框

然後為上面UI view controller設置類別

設定cocoa touch class三個後連結

設定segue跟identifier e.g.第一畫面到命名的segue就是showSettingName
這樣就可以透過segue從第一個畫面跳轉到第二個畫面啦

但有幾個點要修正:

  1. 畫面現在是由下往上但應該要是從左往右
  2. 想要第二頁底色跟著第一頁的按鈕一樣

解決方法:

  1. 用Navigation bar 包在裡面方向就會從左到右
但是會出現navigation bar 只要在show的地方取消勾選就好 Top bar也選None

2.想要第二頁底色跟著第一頁的按鈕一樣就要修改一些程式碼

把storyboard的background.color包在sender裡傳送到SettingNameViewController顯示

讓鍵盤的return改為next並取消自動修正

畫面一讀入就彈出鍵盤

畫面一讀入就彈出鍵盤

按下next之後到SettingNumberViewController

按下next之後到SettingNumberViewController

--

--