我有一个表,基于一个简单的布尔值,我使用cellForRowAtIndexPath中的代码将包含图像的子视图添加到单元格的右侧:
if(myArray[indexPath.row]==YES){
int xpos=self.mainTableView.frame.size.width+self.mainTableView.frame.origin.x-24;
int ypos=(cell.frame.size.height/2)-(18/2);
UIImageView *imv=[[UIImageView alloc]initWithFrame:CGRectMake(xpos,ypos, 18, 18)];
imv.image=[UIImage imageNamed:@"transition-30"];
[cell.contentView addSubview:imv];
}
如果" myArray的值[x]"是否,如何删除以前添加的子视图?
我已尝试使用:[cell.contentView removeFromSuperview]
但删除了整个内容 - 包含的文字。
答案 0 :(得分:2)
您必须在removeFromSuperview
- >上致电imv
[imv removeFromSuperview];
要获取之前添加的imv
,您可以将tag
的{{1}}属性设置为常量,并在下一次调用imv
时获取该属性(请参阅{ {3}})
所以在添加子视图之前:
viewWithTag
删除子视图时,首先必须使用
触发重新加载所需的单元格imv.tag = 1;
[cell.contentView addSubview:imv];
然后在reloadRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation;
中,如果cellForRowAtIndexPath
myArray[indexPath.row] == NO
使用UIImageView *imv = (UIImageView*)[cell.contentView viewWithTag:1];
[imv removeFromSuperview];
属性是不好的做法,因此请考虑创建自己的tag
有关如何执行此操作的说明,请参阅here。