第一步 ? ?在view did load 里面 ?
?初始化解析的類(lèi),這個(gè)類(lèi)通常帶一個(gè)URL 參數(shù),可能還有一個(gè)擴(kuò)展參數(shù),例如查詢(xún)參數(shù), 用block作為參數(shù)進(jìn)行回調(diào)顯示成功還是失敗,如果成功則返回已經(jīng)解析好的結(jié)果,如果失敗則返回失敗的原因
?下面是一個(gè)例子
其中[self setUpParser] 是一個(gè)網(wǎng)絡(luò)請(qǐng)求的類(lèi) 如下
只是簡(jiǎn)單的做了初始化,[self refreshData]用這個(gè)已經(jīng)初始化的類(lèi)來(lái)從服務(wù)器下載數(shù)據(jù)并返回結(jié)果,當(dāng)然解析好之后在返回更好, 如下
?把獲得的數(shù)據(jù)給table view 的data source 賦值并在主線(xiàn)程reload table view,如下
通常在從網(wǎng)絡(luò)獲取數(shù)據(jù)的時(shí)候都會(huì)有一個(gè)view來(lái)提示用戶(hù)正在下載數(shù)據(jù),通常是UIActivityIndicatorView或著自定義的view,在這里用一個(gè)開(kāi)源的庫(kù)MBProgressHUD 來(lái)提示用戶(hù)正在從網(wǎng)絡(luò)下載數(shù)據(jù)
如果有多個(gè)cell,有時(shí)候需要根據(jù)Item 中的某個(gè)參數(shù)來(lái)判斷去顯示那個(gè)cell,通常在cell for row zt indexPath里面判斷,從而返回不同的cell,然后就是用Item的屬性配置cell,配置cell時(shí)要注意如果有圖片需要先清除原有的圖片,然后設(shè)定新的圖片的URL,如
另外還要注意配置cell的方法最好單獨(dú)一個(gè)方法來(lái)寫(xiě)
第二步 讓 table view cell根據(jù)layout自動(dòng)適應(yīng)內(nèi)容的高度
大多數(shù)情況下需要顯示的內(nèi)容可能不止一行,這就需要自動(dòng)調(diào)整cell 的高度,通常做法是在table view heightForRowAtIndexPath方法中 計(jì)算cell的高度如
下面將列出計(jì)算在auto layout 的情況下計(jì)算cell高度的方法
這里生成了一個(gè)cell,并配置cell 然后用方法calculateHeightForConfiguredSizingCell:(UITableViewCell*)sizingCell計(jì)算cell的高度并返回
這里把傳進(jìn)來(lái)的cell,設(shè)定他的寬度為table view ?frame的寬度,高度為cell的bounds的高度
然后方法[sizingCellsetNeedsLayout]使當(dāng)前的cell的layout不可用,然后調(diào)用[sizingCelllayoutIfNeeded] 強(qiáng)迫cell立即更新 layout
然后再用方法[sizingCell.contentViewsystemLayoutSizeFittingSize:UILayoutFittingCompressedSize]獲取layout重新計(jì)算出來(lái)的size
給這個(gè)size的高度加上1point 然后返回就是table view cell的最終高度
第三步 加搜索欄
大多數(shù)情況下table view都會(huì)需要一個(gè)搜索欄來(lái)快速的查找數(shù)據(jù),搜索欄出了searchbar之外還可 以添加一個(gè)UITextField來(lái)獲取搜索的字串
這里將用UITextField,僅僅在text filed return的時(shí)候調(diào)用[self refreshData]; 更新table view 的現(xiàn)實(shí)數(shù)據(jù)