iOS UITableViewCell重用問題

2021-07-11 03:19:52 字數 2321 閱讀 9094

在寫微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

returncell;

}

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

returncell;

}

tableview的重用機制,為了做到顯示和資料分離,ios tableview的實現並且不是為每個資料項建立乙個tablecell。而是只建立螢幕可顯示最大個數的cell,然後重複使用這些cell,對cell做單獨的顯示配置,來達到既不影響顯示效果,又能充分節約內容的目的。

解決方法一:對在cell中新增的控制項設定tag的方法

例如在微博內容中需要新增label,那麼就可以對新增的label設定tag,然後新建cell的時候先remove前乙個cell tag相同的label,再新增新的label,這樣就不會出現cell內容的重疊。

[[cell viewwithtag:100] removefromsuperview];

[[cell contentview] addsubview:contentlabel];

解決方法二:刪除cell中的所有子檢視

在實現微博介面中,乙個cell會有多個控制項(label,imageview...),按理說,對每乙個控制項都設定tag,按照第一種解決方法,應該是可以實現的。但是在實際執行過程中發現不行,還是會出現內容重疊的問題,所以採用第二種解決方法--在新建cell的時候,如果不是空就刪除所有的子檢視。

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpathelse

}

cell.dataarrays=[self.dataarray objectatindex:indexpath.row];

returncell;

}

解決方法三:通過為每個cell指定不同的重用識別符號(reuseidentifier)來解決。

重用機制是根據相同的識別符號來重用cell的,識別符號不同的cell不能彼此重用。於是我們將每個cell的識別符號都設定為不同,就可以避免cell重用問題了。

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

//...其他**

}

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

//...其他**

}

iOS UITableViewCell重用問題

在寫微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 uit...

iOS UITableViewCell重用問題

微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。cpp view plain copy print uitableviewcell tablevie...

iOS UITableViewCell重用問題

在實現uitableview的過程中使用到了cell,在cell上新增一些控制項,但是由於每個cell的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。tableview的重用機制,為了做到顯示和資料分離,ios tableview的實...