關於UITableViewCell的複用性

原文地址 http://blog.sina.com.cn/s/blog_49fce0df01014th5.html

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];

  ……

相關文章
相關標籤/搜索