UITableView這個(gè)iOS開(kāi)發(fā)中永遠(yuǎn)繞不開(kāi)的UIView,那么就不可避免的要在多個(gè)頁(yè)面多種場(chǎng)景下反復(fù)摩擦UITableView,就算是剛跳進(jìn)火坑不久的iOS Developer也知道實(shí)現(xiàn)UITableView的數(shù)據(jù)源dataSource和代理delegate,寫(xiě)出一個(gè)UITableView也就基本OK了,但是這僅僅是寫(xiě)出一個(gè)UITableView而已,作為一個(gè)有想法的程序猿,要做的還有很多,如何利用UITableViewCell的重用機(jī)制,如何提高性能等,這些留在后面的系列中一一講述,那么本文要解決的痛點(diǎn)又是什么呢?回答這個(gè)問(wèn)題之前,我們先來(lái)看看上面提到的UITableView的兩大核心:UITableViewDataSource、UITableViewDelegate!
一、UITableViewDataSource
UITableView需要一個(gè)數(shù)據(jù)源(dataSource)來(lái)顯示數(shù)據(jù),UITableView會(huì)向數(shù)據(jù)源查詢(xún)一共有多少行數(shù)據(jù)以及每一行顯示什么數(shù)據(jù)等。沒(méi)有設(shè)置數(shù)據(jù)源的UITableView只是個(gè)空殼。凡是遵守UITableViewDataSource協(xié)議的OC對(duì)象,都可以是UITableView的數(shù)據(jù)源。查看源碼:
UITableViewDataSourc
二、UITableViewDelegate
通常都要為UITableView設(shè)置代理對(duì)象(delegate),以便在UITableView觸發(fā)一下事件時(shí)做出相應(yīng)的處理,比如選中了某一行。凡是遵守了UITableViewDelegate協(xié)議的OC對(duì)象,都可以是UITableView的代理對(duì)象。一般會(huì)讓控制器充當(dāng)UITableView的dataSource和delegate。查看源碼:
UITableViewDelegate
到這里已經(jīng)很明確了,在需要實(shí)現(xiàn)UITableView的控制器對(duì)象里,就不可避免的要設(shè)置數(shù)據(jù)源和設(shè)置代理,那么就不可避免的需要實(shí)現(xiàn)以上提到的那些代理方