做過移動端開發(fā)的人都知道盐数,列表控件是最常用的控件之一。iOS里的列表控件是UITableView菠秒,其實Apple的開發(fā)人員對于UITableView的設(shè)計已經(jīng)夠好的了(簡單易用恶阴,擴展性非常強等等)淌山。
但對于展示邏輯單一的移動端系統(tǒng)軟件拯勉,你還是能感覺到有些繁瑣(或許是程序員天生就有些懶惰的毛病吧)竟趾。
來看看它到底繁瑣在哪兒了。首先宫峦,它的使用頻率太高了岔帽;第二,它通常不是只呈現(xiàn)一下數(shù)據(jù)就完事了导绷,一般都會跟隨下拉刷新犀勒、上提加載更多功能,當(dāng)然通常還要跟網(wǎng)絡(luò)下載數(shù)據(jù)诵次、圖片打交道账蓉;第三,MVC模式是ios開發(fā)的慣用模式逾一,隨之而來的是一大堆協(xié)議的實現(xiàn)(無論你是再寫一次也好,拷貝也罷肮雨,反正做這些工作都讓人覺得索然無味)遵堵。
沖著這些,今天就把UITableView常見的使用模式封裝了一下。具體做了以下幾件事:
1陌宿、? 內(nèi)嵌了下拉刷新(EGORefreshTableHeaderView)锡足、上提加載更多(LoadMoreTableFooterView)
2、? 內(nèi)置實現(xiàn)了UITableViewDataSource壳坪、UITableViewDelegate這兩個通常必須實現(xiàn)的協(xié)議舶得,對于自實現(xiàn)的邏輯以Block的形式對客戶代碼開放
3、? 內(nèi)置實現(xiàn)了1中提到的兩個組件的回調(diào)協(xié)議爽蝴,同上沐批,自實現(xiàn)的邏輯以Block的形式對外開放
4、? 內(nèi)置實現(xiàn)了EGORefreshTableHeaderView蝎亚、LoadMoreTableFooterView與UITableView交互必須實現(xiàn)的UIScrollViewDelegate協(xié)議
5九孩、? 內(nèi)置實現(xiàn)了異步圖片下載(可選)
代碼中包含了一個示例程序以及三個必備組件:
1、? EGORefreshTableHeaderView
2发框、? LoadMoreTableFooterView(修改版躺彬,原版不能適應(yīng)任何尺寸的高度)
3、? Apple官方提供的異步下載UITableView中的圖片的示例組件(IconDownLoader)梅惯,這個只適用于下載類似于社交網(wǎng)絡(luò)中的用戶頭像宪拥,不建議使用它來下載那些大圖片,因為它甚至都沒有緩存(如果圖片很大铣减,推薦使用SDImage)
代碼解讀
它已經(jīng)內(nèi)置實現(xiàn)了這些協(xié)議她君,所以在你使用它的時候,無需設(shè)置和實現(xiàn)徙歼。
對于不斷變化的業(yè)務(wù)邏輯犁河,這里提供了所有需要實現(xiàn)的block:
它們以屬性的形式對外公開:
對于上提加載更多、下拉刷新魄梯、圖片異步加載這幾個功能都是可選的桨螺,它們以組件的形式存在。比如,在實例化該controller的時候你就可以設(shè)置上提和下拉是否可用故源。而對于圖片下載蝠检,你只要不實現(xiàn)其相應(yīng)得block,它也不會對你造成額外的負(fù)擔(dān)肝箱。
ELTableViewController 的使用
創(chuàng)建一個新的controller繼承自:ELTableViewController;
override父類的initBlocks方法:
然后在ViewDidLoad中調(diào)用:
最后稀蟋,你在實例化該controller的時候煌张,可以指定是否使用上提和下拉
上圖為2017年最新的視頻教程資料,搜索2352149755加我好友私聊我上傳視頻教程退客,有什么不懂的也可以來私聊問我骏融。
不定時更新中链嘀。
如果你能明白這些視頻資料的好差,那么你也算是入行了档玻,底層和中高層就是這一步之差怀泊。