向 iPhone 中的表格视图添加图像时出现问题
我有以下代码来创建单元格并向其中添加图像
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能知道,当您重用“dequeueReusableCellWithIdentifier”中的单元格时,它会返回现有单元格实例(如果存在),这意味着如果单元格存在,其数据也存在,即图像,因此您需要在使用新图像更新单元格之前清除旧图像数据就好像新数据没有图像那么它将显示旧图像,我想你明白了......
好吧,这是解决方案:
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:@"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=@"";