1.Interface Builder(簡稱IB,界面構建器)
1.1 是什麼?
一個可視化的界面編輯工具軟件,在xcode4之後整合到了xcode中
1.2 作用?
通過可視化的界面設置,能夠少寫或不寫代碼而完成界面的設計,從而減少在控制器的viewDidLoad中寫的大量有關創建控件及設置屬性的代碼
1.3 工作原理
將界面所需控件的設置保存到xib文件中,在創建控制器實例的時候,系統會根據指定的xib文件來自動創建視圖中的各個控件的實例、設置實例的屬性,將其用於對控制器自帶的視圖的初始化中。所以,在創建控制器實例時,需要使用initWithNibName方法來指定有關視圖的配置需要加載的文件是哪一個
1.4 所需文件
XxxxYyyy.h
XxxxYyyy.m
XxxxYyyy.xib (xml interface builder)
1.5 IBOutlet,IBAction
由於控制器的視圖中所需的控件都由系統根據xib文件自動創建完成,所以view已經對這些控件對象是strong(強引用)了,但是,此時控制器無法訪問系統創建的這些控件,於是需要通過特殊的方法來獲取系統創建的這些對象的引用。
如果,是對IB中的對象添加屬性訪問,讓控件成爲一個外界可以訪問的輸出口,則通過連線的方式,使其成爲控制其的IBOutlet屬性
如果,是對IB中的對象添加事件的響應,則通過連線的方式,爲控件添加IBAction行爲
添加連線的方式:
a。打開拆分視圖,左邊爲xib文件,右邊爲xib對應的控制器m文件
b。選中控件,按下control
c。在控件上按下鼠標左鍵,拖拽到右側的指定位置
d。如果是添加輸出口,則拖拽到擴展中
e。如果是添加action,則拖拽到類的實現中
1.6 action的參數
在爲控件添加事件響應時,可以添加一個參數,默認爲id類型,代表的是發生事件的源頭是哪個控件,或者說本次事件的發送者是誰
在需要用到這個參數來區分連到同一個方法上的多個控件的時候,可以在連線時,選擇type參數,設置爲具體的某種控件類型,不需要再在方法內進行類型轉換了。
1.7 使用IB連線時的注意事項
如果對IB中的控件連線後,又刪除,那麼此時刪掉的只是代碼中的變量或方法,並沒有刪掉界面中控件記錄的連線,一定要在xib中,選中控件,右鍵,查看綁定的線有幾條,將不需要的連線刪掉,纔不會出錯。
2.基礎控件(UIStepper UISlider UISwitch)
2.1 UIStepper 步進控件
重要屬性:
.value
.maximumValue
.minimumValue
.stepValue
常用事件:
value Changed事件:當數值改變時觸發
2.2 UISlider 滑塊控件
重要屬性:
.value
重要事件:
value Changed事件:當數值改變時觸發
2.3 UISwitch 開關控件
重要屬性:
.on (BOOL) 獲取或設置開關的狀態
.enabled(BOOL) 獲取或設置控件是否可用
重要的事件:
valueChanged事件
3.UITextField
3.1 是什麼?
是單行的文本輸入框,支持用戶的輸入
3.2 屬性
.text 獲取或設置文本框內的文本
… …
3.3 系統彈出的鍵盤
第一響應者:當用戶觸摸界面時,系統會根據手指觸摸的位置層層定位到具體的控件,如果,本次觸點在文本框控件的區域內,那麼文本框就負責對本次的觸碰事件進行響應,由於文本框比較特殊,所以系統自動將文本框設置爲響應事件的第一關,並且自動彈出鍵盤。
插播:
當用戶點擊屏幕後,首先開啓的是查找hit-View的過程。從window開始,給所有直接子視圖發hit-Test的消息,直到某一個控件沒有子視圖了,並且這個觸點在這個子視圖中,則返回這個控件,於是hit-View找到了
找到hit-View後,view則成爲了需要第一個爲這個事件提供響應的對象,如果,該對象沒有提供事件響應,則該事件對象會向視圖的父視圖繼續傳遞,如果父視圖依然沒有提供響應,則繼續向上傳遞,直到傳遞到UIApplication對象,依然沒有處理的話,則拋棄該事件。這個過程叫做響應者鏈。
3.4 如何關閉鍵盤
方法一:讓鍵盤放棄第一響應者的身份即可
[self.textField resignFirstResponder];
方法二:讓鍵盤所在的父視圖結束編輯狀態
[self.view endEditing.YES];
3.5什麼時候關閉鍵盤呢?(關閉鍵盤的時機)
時機一:點擊鍵盤右下角的按鍵
爲文本框添加一個 事件
時機二:點擊屏幕的空白部分
重寫控制器的touchesBegan:withEvent:方法
4.UIAlertView &UIActionSheet
作業:
1.界面如下:
[輸入框][發送按鈕]
1)當點擊發送按鈕後,界面上會出現一個UILabel,內容就是輸入框中的內容,此時要求,收起鍵盤,清空輸入框
2)當用戶點擊鍵盤右下角的按鍵時,功能和1相同
3)label本身設置爲寬280,高40,距離左邊20個點
4)多了label不能重合
2.界面如下:
[輸入框 賬號]
[輸入框 密碼]
[登錄 按鈕]
[UILabel 顯示當前狀態(登錄後顯示用戶名,沒登錄顯示未登錄)]
1)用戶輸入完用戶名和密碼後,點擊登錄,判斷是否可以登錄,如果登錄成功,label上顯示當前用戶的用戶名,如果沒有登錄,顯示未登錄
//2)當用戶沒有填寫用戶名和密碼時,點擊登錄,提供用戶輸入用戶名和密碼
3)第一個textField支持Next功能,第二是Done
--------------------------------------------------------------------------------------------------------
總結: