iOS tableviewcell重用導(dǎo)致cell格式改變

方法1 :

將獲得cell的方法從

- (UITableViewCell*)dequeueReusableCellWithIdentifier:(NSString*)identifier 換為-(UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

重用機制調(diào)用的就是dequeueReusableCellWithIdentifier這個方法鸦概,方法的意思就是“出列可重用的cell”洼哎,因而只要將它換為cellForRowAtIndexPath(只從要更新的cell的那一行取出cell)丽声,就可以不使用重用機制棉磨,因而問題就可以得到解決丽惶,雖然可能會浪費一些空間缅阳。

//下面是示例代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //改為以下的方法 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //根據(jù)indexPath準確地取出一行,而不是從cell重用隊列中取出 
    if (cell == nil) { 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

}......

上面的代碼音羞,無疑是能夠解決界面錯亂的問題囱桨,但如果數(shù)據(jù)很多,那就會浪費相當多的空間嗅绰,不推薦使用舍肠。

方法2:

為每個cell指定不同的重用標識符(reuseIdentifier)來解決。
重用機制是根據(jù)相同的標識符來重用cell的窘面,標識符不同的cell不能彼此重用翠语。于是我們將每個cell的標識符都設(shè)置為不同,就可以避免不同cell重用的問題了财边。

怎么為每個cell都設(shè)置不同的標示符呢肌括?其實很簡單 在返回每一行cell的數(shù)據(jù)源方法中 通過為每一個cell的標示符綁定indexPath.section--indexPath.row就可以了,下面是示例代碼:

//實現(xiàn)建立cell的具體內(nèi)容

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    static NSString * ID = [NSString stringWithFormat:@"cell-ld%-ld%",[indexPath section ],[indexPath row]];

    //2.到緩存池中去查找可重用標示符

    HMWeiboCell * cell = [tableView dequeueReusableCellWithIdentifier:ID];

    if (cell == nil) {

        cell = [[HMWeiboCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }

    //給cell中得屬性framemodel賦值

    HMWeiboFrameModel * frameModel = self.weiboFrameArray[indexPath.row];

    cell.weiboFrameModel = frameModel;

    return cell酣难;

}

//上面的這種方式 雖然說比第一種方式有了一定的改進谍夭,通過為每一個cell都綁定了一個不同的標識符能夠使得cell與cell之間不會重用,解決了界面錯亂的問題憨募,但是從根本上來說還是沒有太大的內(nèi)存優(yōu)化紧索,同樣的如果數(shù)據(jù)比較多還是比較浪費空間。

方法3:

第三種方式其實很簡單就是刪除重用cell的所有子視圖菜谣,這句話什么意思呢珠漂?當我們從緩存池中取得重用的cell后,通過刪除重用的cell的所有子視圖尾膊,從而得到一個沒有特殊格式的cell媳危,供其他cell重用。是不是還是沒懂什么意思冈敛,那我們就接著來看代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *ID = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; //出列可重用的cell

    if (cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }

    else

    {

        //刪除cell的所有子視圖

        while ([cell.contentView.subviews lastObject] != nil)

        {

            [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];//強制裝換為UIView類型 待笑,移除所有子視圖

        }

    }

    return cell;

}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市莺债,隨后出現(xiàn)的幾起案子滋觉,更是在濱河造成了極大的恐慌,老刑警劉巖齐邦,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎侠,死亡現(xiàn)場離奇詭異,居然都是意外死亡措拇,警方通過查閱死者的電腦和手機我纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丐吓,“玉大人浅悉,你說我怎么就攤上這事∪纾” “怎么了术健?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長粘衬。 經(jīng)常有香客問我荞估,道長,這世上最難降的妖魔是什么稚新? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任勘伺,我火速辦了婚禮,結(jié)果婚禮上褂删,老公的妹妹穿的比我還像新娘飞醉。我一直安慰自己,他們只是感情好屯阀,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布缅帘。 她就那樣靜靜地躺著,像睡著了一般难衰。 火紅的嫁衣襯著肌膚如雪股毫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天召衔,我揣著相機與錄音铃诬,去河邊找鬼。 笑死苍凛,一個胖子當著我的面吹牛趣席,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播醇蝴,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宣肚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悠栓?” 一聲冷哼從身側(cè)響起霉涨,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤按价,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笙瑟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楼镐,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年往枷,在試婚紗的時候發(fā)現(xiàn)自己被綠了框产。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡错洁,死狀恐怖秉宿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屯碴,我是刑警寧澤描睦,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站导而,受9級特大地震影響酌摇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗡载,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一窑多、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洼滚,春花似錦埂息、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铲掐,卻和暖如春拾弃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摆霉。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工豪椿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人携栋。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓搭盾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親婉支。 傳聞我的和親對象是個殘疾皇子鸯隅,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容