close

Code與Objects的連結ViewController.swift & Label, Button, etc.

Objects包括Label、Button、TextField等你經常在手機APP中看到的物件,

可以點下圖中的"+"加到Storyboard中(快捷鍵:Shift + Command + "+")

image

具體操作:

方法一_直接拖曳(+Control)

其實只需要一邊按著Control一邊把Object拖曳到代碼裡就可以了,

需要注意這裡分Outlet和Action兩種,Action很好理解,

如果是Button的話就是按Button時會做什麼動作,

而Outlet更像宣告一個常數,就是在代碼中給Object起一個名字,

方便之後隨時召喚啦。

 

方法二_拖曳連結Object與代碼(+Control)

其實基本上與方法一是同一種方法,

只是在設計時很多東西都需要不斷修改,

如果只能用拖曳再生成代碼的方法,

一旦Object不小心刪除後再需連結的話又要重來囉,

所以Swift也讓用戶能直接拖曳Object到已有代碼上作連結。

代碼前的小圈圈就代表有沒有成功連上Object,實心才是正確的,如下圖空心就代表沒有連上啦。

image

方法三_Sent Events(+Control)

點選Object後,可以在右邊欄最右的選項咭中看到該Object與Code的連結情況,

下圖就是當點擊Button後,就會激發ViewController中的clickButton Function,

image

也就是說,我們也可以從這裡連結回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這樣。

image

不同的是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)

 

---

如果想了解其他幾種連結方式,可跳至目錄:

[iOS][Xcode][Swift]iPhone手機編程--Code與Storyboard的幾種連結ViewContronller, Object, Delegate, MVC, Segue, CoreData

arrow
arrow

    4ngus 發表在 痞客邦 留言(0) 人氣()