iPhone:UITableview分隔符在列表很长时消失了吗?

时间:2011-08-13 19:37:58

标签: iphone ios ios4

我有一个分组的tableview,我在viewDidload中设置了它的背景;

self.tableView.backgroundView = nil;
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.separatorColor= [UIColor APP_SEPERATOR_COLOR];   

这是我设定的方法:

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];            
    }
        cell.backgroundColor=[UIColor clearColor];
        cell.backgroundView.alpha=0;
        cell.textLabel.text=cellValue;

    return cell;

这样可以正常工作,但是当有30-40个单元格时,当我向下滚动时,分隔线和表格边框开始迷路,并且再也不会再回来......当我向上滚动时。

任何想法?

2 个答案:

答案 0 :(得分:1)

当细胞滚动和离开屏幕时,细胞会被重复使用。在这种情况下,将调用tableView:cellForRowAtIndexPath:中的自定义。这将覆盖已绘制的内容,包括边框。

只需将代码样式移动到单元格定义部分:

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];            
    cell.backgroundColor=[UIColor clearColor];
    cell.backgroundView.alpha=0;
}
    cell.textLabel.text=cellValue;
    cell.textLabel.font = [UIFont APP_QUESTIONS_FONT];
    cell.textLabel.textColor=[UIColor APP_TEXT_COLOR];
return cell;

答案 1 :(得分:-2)

  

为什么不能说

self.tableView.separatorColor = [UIColor colorWithHue:0.56f  saturation:0.98 brightness:0.65 alpha:0.6]; 
  有自己吗?因为滚动UITableView时每个单元格调用APP_SEPERATOR_COLOR然后需要时间重新绘制。有没有理由使用APP_SEPERATOR_COLOR作为单独的方法?