gpt4 book ai didi

ios - 通过委托(delegate)函数设置 Collection View 中进度条的值

转载 作者:行者123 更新时间:2023-11-29 12:43:42 28 4
gpt4 key购买 nike

我有一个 Collection View 。我想更新其单元格中的进度条。我已经对细胞进行了分类。问题是我从委托(delegate)函数获取进度条的值。这个委托(delegate)函数给出了进度条值,我想更新 Collection View 中的特定进度条。现在,它正在更新进度条,但没有更新正确的进度条。它正在同时更新不同的进度条,可能是因为dequeueReusableCellWithReuseIdentifier。

现在,我在委托(delegate)中使用以下内容来设置进度条的值。每次进度更新时都会调用它这是委托(delegate)方法:

- (void)setProgress:(NSString *)pID andProgress:(float)progress
{
int index = [arr_PID_inCollectionView indexOfObject:pID];

Cell *cell = (Cell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
[cell.progressBar setProgress:progress];
}

我也尝试过给进度条添加标签,但我找不到正确的标签位置,因为如果我在“cellForItemAtIndexPath”函数中添加标签,它们会在 Collection View 移动时再次重置。

假设进度条值来自委托(delegate),您能否建议更新进度条的最佳方法是什么?此外,一段代码将不胜感激。

最佳答案

你走对了。只需做一些小的改变如下:声明一个实例可变字典,用于存储每个单元格的进度值。

NSMutableDictionary *arrProgressForEachCell;

然后在下面的方法中也将进度条的值存储在数组中。

- (void)setProgress:(NSString *)pID andProgress:(float)progress
{
int index = [arr_PID_inCollectionView indexOfObject:pID];
[arrProgressForEachCell setObject: [NSNumber numberWithFloat:progress] forKey:[NSNumber numberWithInt:index]];

Cell *cell = (Cell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
[cell.progressBar setProgress:progress];
}

此外,您还必须对 cellForItemAtIndexPath 委托(delegate)方法进行小的更改,以使用各自的进度值更新每个单元格:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
//All of your code
[cell.progressBar setProgress:[arrProgressForEachCell objectForKey:[NSNumber numberWithInt:index]]];
}

现在完成了。不要忘记在 viewDidLoad 方法中初始化可变字典

arrProgressForEachCell = [NSMutableDictionary dictionary];

关于ios - 通过委托(delegate)函数设置 Collection View 中进度条的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216320/

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