對(duì)于新手cell的復(fù)用很難掌握 下面整理下網(wǎng)上的例子:
static NSString *CellTableIdentifier = @"CellTableIdentifier ";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
CellTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellTableIdentifier] autorelease];
}
首先藐窄,先說一下重用是如何實(shí)現(xiàn)的薇宠,我們有一個(gè)很長(zhǎng)的tableview暴匠,假設(shè)是100行阀圾,但在我們?cè)O(shè)計(jì)的行高情況下萨螺,屏幕只能顯示10行,所以,當(dāng)加載view的時(shí)候狠鸳,實(shí)際只創(chuàng)建這10個(gè)cell哈街,當(dāng)我們用手指向上滑動(dòng)即下方的第11個(gè)cell向上滑進(jìn)界面的過程中留瞳,我們發(fā)現(xiàn)第一行的cell會(huì)滑出界面,當(dāng)滑出后骚秦,第一行這個(gè)cell會(huì)被放到重用隊(duì)列中她倘,第11行將獲得重用隊(duì)列中的一個(gè)cell,這樣作箍,可以很好的控制內(nèi)存硬梁。
在這段代碼中? ? UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];? 意思是定義一個(gè)cell,在tableview中的可重用隊(duì)列中尋找有CellTableIdentifier標(biāo)識(shí)的UITableViewCell胞得,以進(jìn)行重用荧止。這個(gè)Identifier可以由我們自由定義成一些字符串。當(dāng)然阶剑,如果在隊(duì)列中有這樣的UITableViewCell跃巡,那么則返回它給cell,若沒有个扰,則返回nil給cell瓷炮。因?yàn)槲覀冊(cè)趯懗绦驎r(shí)經(jīng)常需要用到好幾個(gè)表格,每個(gè)表格中的cell布局都不一樣递宅,所以我們需要將在同一個(gè)表格的cell(布局一樣)進(jìn)行標(biāo)記Identifier娘香,這樣,在重用的時(shí)候可以得到匹配的cell办龄。
這時(shí)烘绽,就是下面的if語句了,若返回的是nil俐填,即cell==nil安接,則我們需要分配空間并初始化一個(gè)cell,而且需要關(guān)聯(lián)reuseIdentifier英融,以便后面重用的時(shí)候能夠根據(jù)Identifier找到這個(gè)cell盏檐,若cell不為nil歇式,則重用成功,并可return此cell胡野。