? ? 記得很早之前遇到過一個問題,關于cell的重疊問題,現在回顧總結一下。
? ? iOS中tableview的cell顯示是會消耗內存的,如果要顯示無數個cell,不可能把每個cell都存儲下來,為了解決這個問題,cell就用了重用機制,tableview中每次顯示的cell數是有限的,cell的個數是能顯示cell的最大個數,當超過cell能顯示的最大個數,則會重用之前創建的cell,這時就出現cell的重疊問題,比如創建了第一個cell,cell里面有一個label,當重用到這個cell,label不現實,則可能出現cell的重疊現象。
? ? 解決辦法:
? ? 1.cell的每個標示符都不一樣。雖然解決問題了,但是內存的消耗是巨大的。
? ??NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", [indexPath section], [indexPath row]];//以indexPath來唯一確定cell
? ? 2.刪除cell下面所有的子視圖。
? if (cell == nil) {
? cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
? }
? else
? {
? //刪除cell的所有子視圖
? while ([cell.contentView.subviews lastObject] != nil)
? {
? [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
? }
? }
? //...其他代碼
? }