2011-04-22 74 views
1

当我的UITableView加载'lineImage,显示图像在细胞结束时好,但当我滚动tableview行的一些图像正在消失,一些剩余。任何帮助?UITableViewCell - 图像disaapearring当桌面滚动

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 


    UILabel *preferenceLabel; 
    UILabel *line1Label; 
    UILabel *line2Label; 
    UIImageView *lineImage; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

     lineImage = [[UIImageView alloc] initWithFrame:CGRectMake(10.0, 70.0, 320.0, 2.0)]; 
     lineImage.contentMode = UIViewContentModeScaleAspectFit; 
     lineImage.image = [UIImage imageNamed:@"seperator bar.png"]; 
     lineImage.tag = 1; 
     [cell.contentView addSubview:lineImage]; 
     [lineImage release]; 

     preferenceLabel = [appDelegate newLabelWithFrame:CGRectMake(10.0, 5.0, 234.0, 20.0) PrimaryColor:[UIColor blackColor] selectedColor:[UIColor blackColor] 
              fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     preferenceLabel.tag = 2; 
     [cell.contentView addSubview:preferenceLabel]; 
     [preferenceLabel release]; 

     line1Label=[appDelegate newLabelWithFrame:CGRectMake(10.0,20.0,234.0,20.0) PrimaryColor:[UIColor blueColor] selectedColor:[UIColor blackColor] fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     line1Label.tag = 3; 
     [cell.contentView addSubview:line1Label]; 
     [line1Label release]; 

     line2Label=[appDelegate newLabelWithFrame:CGRectMake(10.0,35.0,234.0,20.0) PrimaryColor:[UIColor blueColor] selectedColor:[UIColor blackColor] fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     line2Label.tag = 4; 
     [cell.contentView addSubview:line2Label]; 
     [line2Label release]; 

    } 
    else { 
      lineImage = (UIImageView *) [cell.contentView viewWithTag:1]; 
      preferenceLabel = (UILabel *)[cell.contentView viewWithTag:2]; 
      line1Label = (UILabel *)[cell.contentView viewWithTag:3]; 
      line2Label = (UILabel *)[cell.contentView viewWithTag:4]; 
    } 


    // Configure the cell... 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 


    preferenceLabel.text = @"Preference Label "; 
    [email protected]"Line1 Label"; 
    [email protected]"Line2 Label"; 

    return cell; 


} 
+0

raval:尝试删除这个块'if(cell == nil)'并且让我知道请。 – 2011-04-22 14:41:21

回答

0

当您使用[UIImage的imageNamed:]你没有将其释放,因为你没有自己的页头...

+0

他不这样做。只是一个令人困惑的变量命名方案 – 2011-04-22 14:21:29

+0

糟糕,你是对的... – Aymarick 2011-04-22 14:22:44

+0

他不释放lineImage.image(我看到);他正在释放lineImage;但这是他分配的UIImageView。 – Dave 2011-04-22 14:24:49

0

你确定你的lineImage完全在于你的细胞的范围内? (你的rowHeight是> = 72.0)如果不是,你的单元格可能会重叠一些内容并遮住lineImage。地方代码之后

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
0

lineImage.image = [UIImage imageNamed:@"seperator bar.png"]; 

我觉得insted的加入为imageview的分隔符的我是通过使用这种快乐。 mailSubscritionTable.separatorColor = [UIColor blueColor]; tableView.tableFooterView = [[[UIView alloc] init] autorelease];

0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 


    UILabel *preferenceLabel; 
    UILabel *line1Label; 
    UILabel *line2Label; 
    UIImageView *lineImage; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

     lineImage = [[UIImageView alloc] initWithFrame:CGRectMake(10.0, 70.0, 320.0, 2.0)]; 
     lineImage.contentMode = UIViewContentModeScaleAspectFit; 
//removed a line of code and added at the end 
     lineImage.tag = 1; 
     [cell.contentView addSubview:lineImage]; 
     [lineImage release]; 

     preferenceLabel = [appDelegate newLabelWithFrame:CGRectMake(10.0, 5.0, 234.0, 20.0) PrimaryColor:[UIColor blackColor] selectedColor:[UIColor blackColor] 
              fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     preferenceLabel.tag = 2; 
     [cell.contentView addSubview:preferenceLabel]; 
     [preferenceLabel release]; 

     line1Label=[appDelegate newLabelWithFrame:CGRectMake(10.0,20.0,234.0,20.0) PrimaryColor:[UIColor blueColor] selectedColor:[UIColor blackColor] fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     line1Label.tag = 3; 
     [cell.contentView addSubview:line1Label]; 
     [line1Label release]; 

     line2Label=[appDelegate newLabelWithFrame:CGRectMake(10.0,35.0,234.0,20.0) PrimaryColor:[UIColor blueColor] selectedColor:[UIColor blackColor] fontSize:14.0 fontName:@"Verdana" bold:NO noOfLines:1]; 
     line2Label.tag = 4; 
     [cell.contentView addSubview:line2Label]; 
     [line2Label release]; 

    } 
    else { 
      lineImage = (UIImageView *) [cell.contentView viewWithTag:1]; 
      preferenceLabel = (UILabel *)[cell.contentView viewWithTag:2]; 
      line1Label = (UILabel *)[cell.contentView viewWithTag:3]; 
      line2Label = (UILabel *)[cell.contentView viewWithTag:4]; 
    } 


    // Configure the cell... 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    lineImage.image = [UIImage imageNamed:@"seperator bar.png"];//changes 
    preferenceLabel.text = @"Preference Label "; 
    [email protected]"Line1 Label"; 
    [email protected]"Line2 Label"; 

    return cell; 


} 

请看看上面的代码行,我在代码中做了小的修改并更新。