Storyboard文件
- 在iOS5之前培愁,蘋果使用xib文件來(lái)描述UI界面
- 在iOS5之后获高,蘋果采取了更加強(qiáng)大和先進(jìn)的storyboard文件來(lái)描述界面(Xcode5是基于iOS7的)
- 左邊的箭頭表明:程序一啟動(dòng)就會(huì)顯示箭頭所指的界面
常見的UI控件
UILabel – 文本標(biāo)簽
- 文本標(biāo)簽的作用是顯示一串固定的文字
UIButton – 按鈕
- 按鈕的作用是:監(jiān)聽用戶的點(diǎn)擊事件凉翻,在用戶點(diǎn)擊后做出響應(yīng)
UITextField – 文本輸入框
- 文本輸入框可以彈出鍵盤嗜傅,讓用戶輸入文本內(nèi)容
- 這個(gè)設(shè)置表明:UITextField彈出的是數(shù)字鍵盤
View和ViewController
UIView
- 屏幕上能看得見摸得著的東西就是UIView娜扇,比如屏幕上的按鈕泪勒、文字、圖片
- 一般翻譯叫做:視圖\控件\組件
- UIButton棕兼、UILabel陡舅、UITextField都繼承自UIView
- 每一個(gè)UIView都是一個(gè)容器,能容納其他UIView(比如右圖中的整個(gè)鍵盤是一個(gè)UIView伴挚,里面容納很多小格子的數(shù)字UIView)
父控件和子控件
在“加法計(jì)算器”中靶衍,最后面那塊白色的全屏的東西也是一個(gè)UIView
-
白色的大UIView中容納了很多小的UIView
- 在白色的大UIView中,容納了6個(gè)小UIView(1個(gè)UIButton茎芋、2個(gè)UITextField颅眶、3個(gè)UILabel)
- 這種情況下,我們可以稱白色的大UIView為6個(gè)小UIView的父控件(父視圖)田弥,6個(gè)小UIView都是白色大UIView的子控件(子視圖)
UIViewController
- 手機(jī)上自帶的“設(shè)置”中有很多的界面涛酗,點(diǎn)擊對(duì)應(yīng)的選項(xiàng)可以跳到下一個(gè)界面
每一個(gè)新的界面都是一個(gè)新的UIView,在切換過程中皱蹦,涉及到了:
(1)UIView的創(chuàng)建和銷毀
(2)UIView跟用戶的交互(處理UIView內(nèi)部每一行的點(diǎn)擊)其實(shí)煤杀,每當(dāng)顯示一個(gè)新界面時(shí),首先會(huì)創(chuàng)建一個(gè)新的UIViewController對(duì)象沪哺,然后創(chuàng)建一個(gè)對(duì)應(yīng)的全屏UIView沈自,UIViewController負(fù)責(zé)管理這個(gè)UIView
UIViewController就是UIView的大管家,負(fù)責(zé)創(chuàng)建辜妓、顯示枯途、銷毀UIView,負(fù)責(zé)監(jiān)聽UIView內(nèi)部的事件籍滴,負(fù)責(zé)處理UIView與用戶的交互
UIViewController內(nèi)部有個(gè)UIView屬性酪夷,就是它負(fù)責(zé)管理的UIView對(duì)象 :
@property(nonatomic,retain) UIView*view;嚴(yán)格來(lái)講,下圖箭頭所指的應(yīng)該是一個(gè)UIViewController對(duì)象孽惰,里面白色的界面僅僅是UIViewController內(nèi)部的UIView屬性
- 箭頭所指UIViewController的真實(shí)類型是MJViewController
程序的運(yùn)行流程
- 綜合分析晚岭,可以得出程序的簡(jiǎn)單運(yùn)行流程:
1.讀取Main.storyboard文件
2.創(chuàng)建箭頭所指的MJViewController對(duì)象
3.根據(jù)storyboard文件中描述創(chuàng)建MJViewController的UIView對(duì)象
4.將UIView對(duì)象顯示到用戶眼前
監(jiān)聽按鈕點(diǎn)擊
- 現(xiàn)在已經(jīng)知道:應(yīng)該由ViewController來(lái)監(jiān)聽“計(jì)算”按鈕的點(diǎn)擊
- 換句話說(shuō),ViewController應(yīng)該提供一個(gè)方法出來(lái)勋功,當(dāng)用戶點(diǎn)擊“計(jì)算”按鈕時(shí)坦报,就調(diào)用這個(gè)方法來(lái)通知ViewController按鈕被人點(diǎn)了
- ViewController就在這個(gè)方法中實(shí)現(xiàn)想做的任何事情库说,比如計(jì)算2個(gè)文本輸入框內(nèi)值的和
IBAction和IBOutlet
- IBAction
- 從返回值角度上看,作用相當(dāng)于void
- 只有返回值聲明為IBAction的方法片择,才能跟storyboard中的控件進(jìn)行連線
- IBOutlet
- 只有聲明為IBOutlet的屬性潜的,才能跟storyboard中的控件進(jìn)行連線
設(shè)置程序啟動(dòng)時(shí)加載的storyboard
- 這個(gè)設(shè)置表明:程序啟動(dòng)時(shí)會(huì)加載Main.storyboard
退出鍵盤的兩種方式
- resignFirstResponder
- 當(dāng)叫出鍵盤的那個(gè)控件(第一響應(yīng)者)調(diào)用這個(gè)方法時(shí),就能退出鍵盤
- endEditing
- 只要調(diào)用這個(gè)方法的控件內(nèi)部存在第一響應(yīng)者字管,就能退出鍵盤