向 iPhone 中的表格视图添加图像时出现问题

发布于 2024-10-05 12:49:08 字数 545 浏览 4 评论 0原文

我有以下代码来创建单元格并向其中添加图像

UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)];  
[MyImage setImage:[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]];  
[MyImage setBackgroundColor:[UIColor clearColor]];  
[cell addSubview:MyImage];  
[MyImage release];  

cell.textLabel.text=[dataArray objectAtIndex:indexPath.row];  
     return cell;

我将此表用于多种目的,因此一次又一次地刷新它...... 因此,下一个我的年龄与最后一个重叠,因此出现问题,并且这两个图像都是可见的(我为每个图像使用透明背景)....当我不需要图像时会出现其他问题..这里我无法删除最后一张图片...

请帮忙

i have following code to create cell and add image to it

UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)];  
[MyImage setImage:[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]];  
[MyImage setBackgroundColor:[UIColor clearColor]];  
[cell addSubview:MyImage];  
[MyImage release];  

cell.textLabel.text=[dataArray objectAtIndex:indexPath.row];  
     return cell;

I am using this table for many purposes and therefore refreshing it again and again....
Therefore next i age overlaps the last one due to which problem occurs and both of these images are visible(i am using transparent background for each image).... other problem occurs when i need no image..here i am unable to remove the last image ...

please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

靑春怀旧 2024-10-12 12:49:08

您可能知道,当您重用“dequeueReusableCellWithIdentifier”中的单元格时,它会返回现有单元格实例(如果存在),这意味着如果单元格存在,其数据也存在,即图像,因此您需要在使用新图像更新单元格之前清除旧图像数据就好像新数据没有图像那么它将显示旧图像,我想你明白了......

好吧,这是解决方案:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil)
{
   cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleDefault reuseIdentifier:cellIdentifier];

   UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)]; 
   MyImage.tag = 1000; 

   [MyImage setBackgroundColor:[UIColor clearColor]];  
   [cell addSubview:MyImage];  
   [MyImage release]; 
}
UIImageView *imgView = (UIImageView*)[cell viewWithTag:1000];
imgView.image = nil;
imgView.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];

As you might be aware that when you reuse cell from 'dequeueReusableCellWithIdentifier', it returns you existing cell instance if present, that means if cell exist its data also exists i.e. image, so you need to clear the old image before updating the cell with new data as if new data doesn't have image then it will show old image, I guess you got the point...

Ok here is the solution:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil)
{
   cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleDefault reuseIdentifier:cellIdentifier];

   UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)]; 
   MyImage.tag = 1000; 

   [MyImage setBackgroundColor:[UIColor clearColor]];  
   [cell addSubview:MyImage];  
   [MyImage release]; 
}
UIImageView *imgView = (UIImageView*)[cell viewWithTag:1000];
imgView.image = nil;
imgView.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];
入怼 2024-10-12 12:49:08

在您使用

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 的地方
如果(单元格==零){
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"] autorelease];

其修改为
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"] autorelease];

这是一种解决方案,它总是向旧的现有单元添加新框架。

或者

将背景颜色从透明颜色中删除为某种颜色,然后每次在图像上添加默认图像或特定图像。当您不想向标签添加任何文本时,也可以添加 text=@"";

Where you use

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"] autorelease];
}

Modify this to
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"] autorelease];

This one is the solution it always add new frame to old existing cell.

Or

Remove background color to some color from clear color and each time add on image either default image or particular image.same for label when you dont want to add any text to label then also add text=@"";

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文