staticNSString*identifier = @"CELLIDENTIFIER";html
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; // 複用tableviewcellapp
if (cell == nil) ide
{spa
//建立tableviewcell設計
cell = [[[RankingCategoryTableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:identifier] autorelease]; 代理
}orm
…… // 重繪tableviewcell中的組件,即改變組件的狀態htm
UITableViewCell複用性原理: blog
在執行- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath代理方法時會新建幾個tableviewcell,有幾個tableviewcell取決於tableview開始顯示時能夠顯示幾個tableviewcell,之後滑動tableview時,不會再新建內存
tableviewcell, 即再也不申請內存空間,直接複用已經存在的tableviewcell,即直接重繪tableviewcell。
UITableViewCell滑動時產生cell重疊的問題:
產生tableviewcell重疊的問題時由於沒有對cell進行重繪,即沒有重繪tableviewcell的子視圖組件,必須改變子視圖 的顯示狀態。
關於UITableViewCell重繪有兩種解決方法:
1)直接自定義一個UITableViewCell,而後經過組件的getter,setter方法設計組件的狀態。
2)每次複用時先將UITableViewCell上的子視圖釋放掉;
for (UIView *tempView in cell.contentView)
{
[tempView removeFromSuperview];
……