Code與Objects的連結(ViewController.swift & Label, Button, etc.)
Objects包括Label、Button、TextField等你經常在手機APP中看到的物件,
可以點下圖中的"+"加到Storyboard中(快捷鍵:Shift + Command + "+")
具體操作:
方法一_直接拖曳(+Control)
其實只需要一邊按著Control一邊把Object拖曳到代碼裡就可以了,
需要注意這裡分Outlet和Action兩種,Action很好理解,
如果是Button的話就是按Button時會做什麼動作,
而Outlet更像宣告一個常數,就是在代碼中給Object起一個名字,
方便之後隨時召喚啦。
方法二_拖曳連結Object與代碼(+Control)
其實基本上與方法一是同一種方法,
只是在設計時很多東西都需要不斷修改,
如果只能用拖曳再生成代碼的方法,
一旦Object不小心刪除後再需連結的話又要重來囉,
所以Swift也讓用戶能直接拖曳Object到已有代碼上作連結。
代碼前的小圈圈就代表有沒有成功連上Object,實心才是正確的,如下圖空心就代表沒有連上啦。
方法三_Sent Events(+Control)
點選Object後,可以在右邊欄最右的選項咭中看到該Object與Code的連結情況,
下圖就是當點擊Button後,就會激發ViewController中的clickButton Function,
也就是說,我們也可以從這裡連結回Code中:
需要注意的是,雖然說是三種方法,但並不是三揀其一就可以的哦,
不管你用哪一種方法,Swift都會同時把另外兩種補全,
也就是說,如果要程序正確運行,
1. 必須要在Storyboard中有相關Object
2. 而且要成功連上代碼(實心)
3. 在Object的SentEvents頁要顯示連結
第3點最常出錯在修改代碼後,當你做好上面連結後,如果又不想要這個功能而刪除時,
SentEvents的連結是不會隨之被刪除的,一定要手動解除才能運行,
(怎麼感覺這麼蠢啊⋯⋯)
不解除就會出現error:terminating with uncaught exception of type NSException
三、Code與Delegate的連結(ViewController.swift & UITextFieldDelegate, MKMapViewDelegate, CLLocationManagerDelegate, etc.)
Delegate譯作代理、代表,
其實就是擔任監察員的角色,
去觀察特定Object的動作。
就好像VB中BUTTON、LABEL,甚至WORKBOOK都可以有不同的動作選擇,
即WORKBOOK開啓時就做這段CODE,或WORKBOOK關閉前就做那段CODE這樣。
不同的是VB是可以直接選擇,SWIFT除了BUTTON內置了DELEGATE外,
TEXTFIELD等很多其他OBJECT都需要開發者自行連結的。
下面就先以TEXTFIELD為例,
如果我想在用戶在TEXTFIELD輸入的時候,顯示「輸入中」,那應該怎樣做呢?
先顯示一下最後的效果,方便理解:
首先,要在Storyboard中派Viewcontroller作為TextField的Delegate
然後,理所當然要寫CODE啦,
由於是在Text Field中打字時才顯示,
所以function是textFieldDidBeginEditing,
程式一般打幾個字就會有提示出來,可用TAB選擇,不用自己打的啦,
注意,如果未顯示的話,可能是漏做了上一步,
這樣不管怎麼打也無法出現TextFieldDelegate的部分哦。
當然,這是最初步的效果,TextField的Delegate通常還要做彈出收起鍵盤,收縮頁面等部分,
但因為這邊只是簡單介紹一下,
詳細的部分過段時間某君應該(?)會單獨開一篇的。
2020.08.24 想不到才過一天就完成了,雖然內容很簡單,但對拖延症癌的本君來說還是值得一讚:
[iOS][Xcode][Swift]iPhone手機編程--Text Field在APP中的簡單設定(彈出收起鍵盤收縮頁面, UITextFieldDelegate, Gesture, Tap)
---
如果想了解其他幾種連結方式,可跳至目錄:
留言列表