这太奇怪了。我也毫不犹豫地发布这个问题,但我没有任何解决方案,这就是为什么我决定发布它。我走了。
我有一个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
文本。
我没有写任何其他代码我无法弄清楚。
当我选择任何单元格时:
当我选择另一个单元格时:
当我选择Previous Cell:
时以下是制作单元格的代码:
- (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;
}
答案 0 :(得分:2)
答案 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