2012-05-08 19 views
0

当我在UItablevewcell中添加标签时,如果它在cellview的contentview中为零。如果它不是零,我将通过标签采用该标签而不分配。它是重用该单元格的正确过程。 但是当我不想要第二行中的标签时,我必须将其隐藏。如何删除第二行中的标签 而不隐藏。我需要它在第一行。只在特定行中删除contentview对象?

回答

0

例如,您可以在出列并创建它们时使用不同的单元标识符。例如@“带标签的单元”和@“无标签的单元”。

或者您可以通过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]; 
} 
0

当你重用它们没有共同的元素的单元格,最好的做法是重新使用前清除细胞子视图(所有添加的元素)。

这样你就可以根据自己的需要,每次添加的元素...

你可以这样做:

for(UIView *view in cell.contentView.subviews){ 
     [view removeFromSuperview]; 
    } 

,或者如果你想更花哨:

[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

当然,如果您只想清除特定行中的一个特定元素,那么当您将元素添加到元素的contentview时,必须为元素指定一个唯一标记,然后通过访问它将其删除通过它的标记值:

将它添加到单元格:

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]; 

}