UITableViewCell - 图像是滚动表格视图

时间:2011-04-22 14:04:32

标签: iphone objective-c ios uitableview

在此代码中,当我的UITableView加载'lineImage时,在单元格的末尾显示图像,但是当我滚动tableview时,一些行的图像正在消失,而一些图像仍然存在。任何帮助?

- (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 ";
    line1Label.text=@"Line1 Label";
    line2Label.text=@"Line2 Label";

    return cell;


}

5 个答案:

答案 0 :(得分:0)

当您使用[UIImage imageNamed:]时,您不必释放它,因为您没有自己分配...

答案 1 :(得分:0)

你确定你的lineImage完全在你的细胞范围内吗? (你的rowHeight是> = 72.0)如果不是,你的单元格可能会重叠某些内容并遮挡lineImage。

答案 2 :(得分:0)

地点

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

之后的

代码

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

答案 3 :(得分:0)

我认为不是为分隔符添加imageview,我很高兴使用它。

mailSubscritionTable.separatorColor = [UIColor blueColor];
tableView.tableFooterView = [[[UIView alloc] init] autorelease];

答案 4 :(得分: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 ";
    line1Label.text=@"Line1 Label";
    line2Label.text=@"Line2 Label";

    return cell;


}

请查看上面的代码行。我们对您的代码进行了细微更改并进行了更新。