Ios 通过委托函数设置集合视图中进度条的值

Ios 通过委托函数设置集合视图中进度条的值,ios,objective-c,delegates,uicollectionview,Ios,Objective C,Delegates,Uicollectionview,我有一个收藏视图。我想更新其单元格中的进度条。我已经对细胞进行了分类。问题是我正在从委托函数获取进度条的值。此委托函数提供进度条值,我想更新集合视图中的特定进度条。 现在,它正在更新进度条,但没有更新正确的进度条。它同时更新不同的进度条,可能是因为dequeueReusableCellWithReuseIdentifier 现在,我在委托中使用以下命令来设置进度条的值。每次进度更新时都会调用此函数 这是委托方法: - (void)setProgress:(NSString *)pID andPr

我有一个收藏视图。我想更新其单元格中的进度条。我已经对细胞进行了分类。问题是我正在从委托函数获取进度条的值。此委托函数提供进度条值,我想更新集合视图中的特定进度条。 现在,它正在更新进度条,但没有更新正确的进度条。它同时更新不同的进度条,可能是因为dequeueReusableCellWithReuseIdentifier

现在,我在委托中使用以下命令来设置进度条的值。每次进度更新时都会调用此函数 这是委托方法:

- (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”函数,当集合视图移动时,它们会再次被重置


假设进度条值来自代理,请您建议更新进度条的最佳方式。此外,一段代码也将受到赞赏

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

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委托方法中做一些小更改,以使用每个单元格各自的进度值更新每个单元格:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
//All of your code
[cell.progressBar setProgress:[arrProgressForEachCell objectForKey:[NSNumber numberWithInt:index]]];
}
现在它完成了。不要忘记在viewDidLoad方法中初始化可变字典

arrProgressForEachCell = [NSMutableDictionary dictionary];

您需要显示尝试设置进度条值的整个方法,以及获取值的委托方法。我已在此处复制了整个委托函数。