当我在UItablevewcell中添加标签时,如果它在cell的contentview中为nil。如果它不是nil, 我通过标签获取该标签而没有allocating.it是重用该单元格的正确程序。 但是当我不想在第二行中使用该标签时,我必须隐藏它。如何才能删除第二行中的标签 没有隐藏。我需要在第一行。
答案 0 :(得分:0)
例如,您可以在出列时使用不同的单元格标识符并创建它们。例如@“Cell With Label”和@“Cell Without Label”。
或者您可以按label.tag = MY_INT_TAG
标记此标签,然后按UILabel *label = [cell viewWithTag:MY_INT_TAG]
进行搜索,将其从第二行的超级视图中删除。当你不想继承UITableViewCell时,它可以工作。
if (indexPath.row == 0) {
UILabel *label = [[UILabel alloc] init];
label.tag = TAG;
[cell.contentView addSubview:label];
} else if (indexPath.row == 1) {
UILabel *label = [cell.contentView viewWithTag:TAG];
[label removeFromSuperView];
}
答案 1 :(得分:0)
当您重复使用没有共同元素的单元格时,最佳做法是在重复使用之前清除单元格子视图(所有添加的元素)。
这样您就可以根据需要每次添加元素......
你可以这样做:
for(UIView *view in cell.contentView.subviews){
[view removeFromSuperview];
}
或者如果你想更加喜欢:
[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
当然,如果您只想清除特定行中的1个特定元素,那么在将其添加到单元格的contentview时必须为该元素指定唯一标记,然后通过它的标记值访问该元素来删除它: / p>
将其添加到单元格中:
UIImageView *rightArrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
rightArrow.tag = 111;
rightArrow.frame = CGRectMake(290, 16, 4, 8);
[cell.contentView addSubview:rightArrow];
从第2行的视图中删除它:
if (indexpath.row == 2) {
UIImageView *rightArrow = (UIImageView *)[cell.contentView viewWithTag:111];
if (rightArrow)
[rightArrow removeFromSuperView];
}