UILabel隐藏文本问题

时间:2015-10-26 11:15:37

标签: ios objective-c iphone xcode uicollectionview

这太奇怪了。我也毫不犹豫地发布这个问题,但我没有任何解决方案,这就是为什么我决定发布它。我走了。

我有一个XIB,我已经在UICollectionView中将其子类化了。这是我在didSelectMethod中的代码:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

 CollectionViewCell *cell = (CollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath];

cell.nameLabel.textColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.8];

[cell setSelected:NO];

cell.nameLabel.hidden = NO;
cell.nameLabel.text = @"HHHHHHH";
cell.nameLabel.backgroundColor = [UIColor redColor];

}

现在,当我运行我的代码时,我得到了正确的输出。但是,当我选择任何cell时,我的UILabel的文字被隐藏,我只能看到background颜色。

当我选择另一个时,我会找回之前选择的UILabel文本。

我没有写任何其他代码我无法弄清楚。

当我选择任何单元格时:

enter image description here

当我选择另一个单元格时:

enter image description here

当我选择Previous Cell:

enter image description here

以下是制作单元格的代码:

 - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {

// Get reusable cell reference
CollectionViewCell *cell = (CollectionViewCell *)[cv dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath];



[cell updateText];




return cell;
}

此方法位于自定义类

 - (void) updateText{


self.nameLabel.text = name;

 }

5 个答案:

答案 0 :(得分:2)

转到您的nib / xib文件,检查突出显示的颜色天气或其他颜色。如果明确而不是根据您的要求进行更改。

enter image description here

答案 1 :(得分:1)

didSelectItemAtIndexPath中捕获所选索引并重新加载集合视图。在cellForIndexPath中检查您选择的索引并在那里执行操作。做一些像下面的事情

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    if (selectedIndex == indexPath.row) {
        cell.nameLabel.textColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.8];

        [cell setSelected:NO];

        cell.nameLabel.hidden = NO;
        cell.nameLabel.text = @"HHHHHHH";
        cell.nameLabel.backgroundColor = [UIColor redColor];
    }
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
       selectedIndex = indexPath.row;
       [collectionView reloadData];
}

答案 2 :(得分:0)

它很高可能是因为您的CollectionViewCell是可重复使用的单元格。您hidden状态也会被重用于其他单元格。您应该在cellForIndexPath方法中进行设置。

- (void)updateText
{
    self.nameLabel.text = name;
    cell.nameLabel.hidden = YES; // set here it's default value
}

答案 3 :(得分:0)

为每个单元格创建一个Bool数组,然后在选择任何单元格时更新值,即在didSelectItemAtIndexPath中。 同样在cellForItemAtIndexPath内,您可以像Vijay一样引用,除了仅考虑一个选定的单元格,您现在可以处理多个选定的单元格。

答案 4 :(得分:0)

真正的问题是你应该设置突出显示的标签颜色,以便在不知不觉中清除xib中的颜色。检查您的笔尖并将突出显示的属性更改为您想要的所需颜色。选择单元格后,子视图会将其颜色更改为xib中突出显示的颜色集。希望这会帮助你。 enter image description here