gpt4 book ai didi

ios - UICollectionView 和滚动程序 Bug

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

我在普通的 UIViewController 中有一个 UICollectionView。

在 collectionview 中,我为 Storyboard中的 collectionviewcells 设计了可重用的 UI。

在 collectionviewcell 内部有一个标签显示单元格 indexpath.row 和 5 个 UIButtons,如果被选中,它们会改变颜色并保持选中状态。

我已经设置了 collectionview,这样如果请求超过 30 个单元格,collectionview 将水平分页,collectionview 布局也是水平的。

该应用程序运行良好,可以正确滚动并正确布置单元格。

问题 我遇到的问题是,当您在 collectionviewcell(假定布局 100 个单元格)中选择例如 单元格 1 中的按钮 A 并分页翻两页时(60+ 个单元格)到第 3 页,选中单元格编号 75 中的按钮 A。此外,如果您滚动到末尾(100 个单元格)并滚动回第 3 页,则单元格编号 75 中的按钮 A 处于更长的选中状态,但单元格编号 64 中的按钮 A 被选中

下面是一些代码片段:cell.m - 控制用户的操作。

- (IBAction)bubbleButtons:(id)sender {
for(UIButton *bubbleCell in self.bubbleButtons) {
if (bubbleCell.touchInside && !bubbleCell.selected) {
bubbleCell.selected = YES;
} else if (bubbleCell.touchInside && bubbleCell.selected) {
bubbleCell.selected = NO;
}
}

}

MainViewContoller.m - 从 Storyboard中制作的 UICollectionViewCell 设置单元格

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
Cell *cell1;
cell1 =[collectionView dequeueReusableCellWithReuseIdentifier:zCellID
forIndexPath:indexPath];
cell1.numMainLabel.text = [NSString stringWithFormat:@"%d |",indexPath.row+1];
return cell1;

我真的不明白哪里出了问题或导致此错误的原因,我假设它与 View 的新部分变得可见时重新加载的 View 有关,但这只是一个猜测。将不胜感激。

  • 扎克

最佳答案

可能是reusable view被复用了。

执行此操作的正确方法是创建自定义可重用 View 子类。并保存这 5 个按钮的选择。

        cell1 =[collectionView dequeueReusableCellWithReuseIdentifier:zCellID

此处的这一行可能会或可能不会为您提供一个新的单元格,它可能会为您提供一个以前使用过的单元格。所以,你需要更新那里的选择。或者它与重复使用的单元保持相同。

关于ios - UICollectionView 和滚动程序 Bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18936164/

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