gpt4 book ai didi

ios - UICollectionViewCell Selection 选择/突出显示每 5 个单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:21 25 4
gpt4 key购买 nike

我有一个水平的 Collection View ,其中包含用于突出显示/为所选单元格着色的代码。它突出显示所选的单元格,但之后每 5 个单元格也会突出显示。知道发生了什么事吗?

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
for(int x = 0; x < [cellArray count]; x++){
UICollectionViewCell *UnSelectedCell = [cellArray objectAtIndex:x];
UnSelectedCell.backgroundColor = [UIColor colorWithRed:0.2 green:0.5 blue:0.8 alpha:0.0];
}
UICollectionViewCell *SelectedCell = [cellArray objectAtIndex:indexPath.row];
SelectedCell.backgroundColor = [UIColor colorWithRed:0.2 green:0.5 blue:0.8 alpha:1.0];
cellSelected = indexPath.row;
NSLog(@"%i", cellSelected);

}

最佳答案

发生这种情况是因为在您滚动时单元格被重复使用。您必须在模型中存储所有行的“突出显示”状态(例如在数组或 NSMutableIndexSet 中),并在 collectionView:cellForItemAtIndexPath: 中设置背景颜色根据该行状态的单元格。

didSelectItemAtIndexPath 中设置新选择的颜色应该就足够了和之前选择的单元格。

更新:如果一次只能选择一个单元格,您只需要记住所选单元格的索引路径。

为当前突出显示的行声明一个属性selectedIndexPath:

@property (strong, nonatomic) NSIndexPath *selectedIndexPath;

didSelectItemAtIndexPath 中,取消突出显示前一个单元格,并突出显示新单元格:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
if (self.selectedIndexPath != nil) {
// deselect previously selected cell
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:self.selectedIndexPath];
if (cell != nil) {
// set default color for cell
}
}
// Select newly selected cell:
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
if (cell != nil) {
// set highlight color for cell
}
// Remember selection:
self.selectedIndexPath = indexPath;
}

cellForItemAtIndexPath 中,使用正确的背景颜色:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Identifier" forIndexPath:indexPath];
if ([self.selectedIndexPath isEqual:indexPath) {
// set highlight color
} else {
// set default color
}
}

关于ios - UICollectionViewCell Selection 选择/突出显示每 5 个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19880267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com