- 加載xib
tabBarController初始化xib
intWithNibName
大前提是UIViewController有一個(gè)UIView.同時(shí),需要厘清兩個(gè)概念,創(chuàng)建一個(gè)類和實(shí)例化一個(gè)類.在XCode中創(chuàng)建一個(gè)類和實(shí)例化一個(gè)類很容易區(qū)分,但是在IB(Interface Builder)中有時(shí)候就會迷糊.其實(shí)也很好區(qū)分,孤零零地創(chuàng)建了一個(gè)nib文件,沒有和其他可被實(shí)例化的類有直接或間接關(guān)系的時(shí)候,這個(gè)類或這些類(一個(gè)nib文件俺也可能包含多個(gè)類)是沒有機(jī)會被實(shí)例化的,所以這種情況只是通過ib創(chuàng)建了一個(gè)類,而沒有實(shí)例化.真正的實(shí)例化還需要通過在Xcode用代碼來讀取這個(gè)nib文件.知道這兩這的區(qū)別后這些方法也就容易辨認(rèn)多了
viewDidLoad其實(shí)沒什么可混淆的,無論通過什么途徑加載(Xcode或者IB,這里的加載屬于實(shí)例化)完view后肯定會執(zhí)行這個(gè)方法.
loadView需要分兩種情況.當(dāng)你通過Xcode實(shí)例化一個(gè)類的時(shí)候就需要自己在controller中實(shí)現(xiàn)這個(gè)方法.而在IB中實(shí)例化就不需要實(shí)現(xiàn)它.
initWithNibName這個(gè)方法是在controller的類在IB中創(chuàng)建,但是通過Xcode實(shí)例化controller的時(shí)候用的.
awakeFromNib這個(gè)方法是一個(gè)類在IB中被實(shí)例化是被調(diào)用的.看了帖子發(fā)現(xiàn)大家都推薦使用viewDidLoad而不要使用awakeFromNib,應(yīng)為viewDidLoad會被多次調(diào)用,而awakeFromNib只會當(dāng)從nib文件中unarchive的時(shí)候才會被調(diào)用一次.實(shí)際測試中發(fā)現(xiàn),當(dāng)一個(gè)類的awakeFromNib被調(diào)用的時(shí)候,那么這個(gè)類的viewDidLoad就不會被調(diào)用了,這個(gè)感覺很奇怪.
initWithCoder是一個(gè)類在IB中創(chuàng)建但在xocdde中被實(shí)例化時(shí)被調(diào)用的.比如,通過IB創(chuàng)建一個(gè)controller的nib文件,然后在xocde中通過initWithNibName來實(shí)例化這個(gè)controller,那么這個(gè)controller的initWithCoder會被調(diào)用.
如果你的對象是UIViewControler的子類,那么你必須調(diào)用- (id)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle)nibBundleOrNil;方法去調(diào)用NIB文件初始化自身,即使那沒有使用nib文件也會調(diào)用這個(gè)函數(shù)(默認(rèn)情況下init方法已經(jīng)為你的做這件事情了),如果你調(diào)用這個(gè)方法,并傳遞的兩個(gè)參數(shù)為空(nil),然后類會調(diào)用-loadView去讀取一個(gè)名字和你的UIViewController名字相同的nib文件,來初始化自身。如果沒有這樣的nib文件,你必須調(diào)用-setView:來設(shè)置一個(gè)self.view。或者重載-loadView 方法
運(yùn)行順序:本人已試過:
viewDidLoad ->awakeFromNib ->viewWillAppear
加載sb
uistoryBoard* sb = [uistoryBoard storyBoardWithName bundle:nil];
創(chuàng)建cell視圖模型
在cell視圖中接收數(shù)據(jù)模型
在xib中設(shè)置約束:cell大view 原創(chuàng)一個(gè)大View 轉(zhuǎn)發(fā)一個(gè)大view 底部視圖一個(gè)大view
原創(chuàng)大view:高度先隨便寫 以后通過修改約束 適配每一個(gè)cell
名字label和頭像 頂部對齊+間距
正文寬度.還不確定
開始連線-控件及原創(chuàng)大View的高度約束
setStatus (控制器給了模型數(shù)據(jù)后調(diào)用類似swift中didset) 中給每個(gè)屬性賦值
返回cell的高度 在cell模型中提供返回高度的方法 在tableview高度代理方法中設(shè)置
防止cell重用 重置會員圖標(biāo)和用戶名顏色
-
配圖
在xib中拖個(gè)collectionview 設(shè)置約束(w 230 h 70)先隨便設(shè)
在xib中cell位置添加一個(gè)容器View 內(nèi)部添加圖片和Gif圖片
collectioncell的代理 設(shè)置給tableviewcell
創(chuàng)建自定義collectioncell類 并拖線(collectioncell的約束高度)
在setstaus中判斷顯示幾張圖
在tableviewcell中設(shè)置collectionview的代理方法
設(shè)置圖片url:在collectioncell中提供url接口 再seturl設(shè)置
設(shè)置gif
屏幕快照 2015-11-23 上午3.34.09.png