0

在 TableView 中设置单元格时遇到问题...我使用图像视图和两个标签、一个标题和一个详细信息设置了表格视图。第一部分看起来不错,但滚动后,它不断地将所有标签堆叠在一起。

这是我的代码:

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

static NSString *CellIdentifier = @"Cell";

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

}



RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
   NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate];
NSLog(@"%@", articleDateString);
//  cell.textLabel.text = entry.articleTitle; 
// cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ - %@", articleDateString, entry.blogTitle];

UIFont *cellFont = [UIFont fontWithName:@"ArialRoundedMTBold" size:17];    
//cell.textLabel.font = cellFont;
UIFont *cellFont2 = [UIFont fontWithName:@"ArialRoundedMTBold" size:12];    
//cell.detailTextLabel.font = cellFont2;
UIImage *img = [UIImage imageNamed:@"anicon.png"];
UIImageView *alternate = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,70,70)];


alternate.image = img;
UILabel *alternatelabel = [[UILabel alloc] initWithFrame:CGRectMake(75,0,210,70)];
alternatelabel.backgroundColor = [UIColor clearColor];
UILabel *detailLabel = [[UILabel alloc] initWithFrame:CGRectMake(75, 20, 225, 70)];
detailLabel.backgroundColor = [UIColor clearColor];
detailLabel.text = [NSString stringWithFormat:@"%@ - %@", articleDateString, entry.blogTitle];
detailLabel.font = cellFont2;
alternatelabel.font = cellFont;

alternatelabel.text = entry.articleTitle;

[cell.contentView addSubview:alternate];
[cell.contentView addSubview:alternatelabel];
[cell.contentView addSubview:detailLabel];
[detailLabel release];
[alternatelabel release];
[alternate release];
NSLog(@"imageurl%@", img);

return cell;
}
4

3 回答 3

1

我想建议您在此方法中分配并添加到单元格子组件中

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
UILabel *detailLabel = [[UILabel alloc] initWithFrame:CGRectMake(75, 20, 225, 70)];
detailLabel.tag = 88;
detailLabel.backgroundColor = [UIColor clearColor];


[cell.contentView addSubview:detailLabel];
}

然后将这一行写在 if 循环之外。

UILabel *detailLabel = (UILabel *)[cell viewWithtag:88];
detailLabel.text = [NSString stringWithFormat:@"%@ - %@", articleDateString, entry.blogTitle];

不要忘记分配标签值。

然后你可以像下面这样访问

希望你能明白我想说的......

于 2012-06-14T05:23:31.553 回答
0

那是因为您不断在重复使用的单元格上添加标签,当一个单元格被重复使用时,它会恢复原样(使用您添加的上一个标签),并且您不断添加标签......

解决方案..

1- 子类 UITableViewCell 拥有你想要的标签,只需设置它们的文本和属性

2-从单元格中删除标签(如果有的话)并重新添加单元格,或者用标签标记它们,以便以后找到它们并设置它们的文本(我可能会选择选项 1)

于 2012-06-13T17:15:28.920 回答