gpt4 book ai didi

ios - UICollectionViewCell 未正确设置属性

转载 作者:行者123 更新时间:2023-11-28 21:49:00 24 4
gpt4 key购买 nike

我正在尝试创建包含少量属性的自定义 UICollectionViewCell,并根据这些属性的值在单元格内绘制组件。我正在使用 dequeueReusableCellWithReuseIdentifier 创建单元格,然后设置一些属性,最后调用 layoutIfNeeded 函数,该函数在我的自定义单元格中被覆盖。重写函数正在设置单元格的一些属性,例如 BOOL 属性设置为 YES,并且在刷新单元格(在 Collection View 上调用 reloadData)之后再次调用函数 layoutIfNeeded。当我尝试读取设置为 YES 的 BOOL 属性时,我总是得到默认值,这是我第一次调用 reloadData 时的默认值。当我第二次调用 reloadData 时,属性设置为 YES。知道我做错了什么吗?这是我正在使用的代码:

点击按钮我正在打电话:

[myCollectionView reloadData];

方法 cellForItemAtIndexPath 看起来像:

MyCustomCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCustomCell" forIndexPath: indexPath];
cell.device = [collectionArray objectAtIndex:indexPath.row];
[cell layoutIfNeeded];
return cell;

以及MyCustomCollectionCell.mlayoutIfNeeded的代码

-(void)layoutIfNeeded{
NSLog(@"bool prop: %d",changedStatus);
changedStatus = YES;

}

BOOL 属性在 MyCustomCollectionCell.h 中定义:

@property (nonatomic, assign)BOOL changedStatus;

更新:

对不起,我的帖子有误。我不是使用 reloadData 刷新集合,而是使用 reloadItemsAtIndexPaths;此调用导致我的自定义单元格的 init 方法被再次调用(不仅仅是在第一次加载 Collection View 时),然后是 layoutIfNeeded。我的问题是单元格没有被重用,而是再次创建,导致所有属性消失。知道如何解决这个问题吗?

最佳答案

您不能使用单元格来存储状态数据。细胞被使用,放入重用队列,然后被回收。当重新加载表、重新加载单元格、滚动以显示新单元格等时,存储特定 indexPath 数据的特定单元格对象可能会发生变化。

在您的数据模型中保存状态数据。

关于ios - UICollectionViewCell 未正确设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033304/

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