从UITableView单元格中删除子视图

时间:2014-04-19 19:52:11

标签: ios objective-c uitableview

我有一个表,基于一个简单的布尔值,我使用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]但删除了整个内容 - 包含的文字。

1 个答案:

答案 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