Я хочу, чтобы отобразить представление хода в коллекции просмотра, когда пользователь нажимает на ячейке, а также хотят прогресс отображения зрения прогресса этой ячейки.Как отобразить UIProgressView на делекторе didSelectItemAtIndexPath UICollectionView в Objective-C?
//...in .h файл я объявили UIProgressView -
@property(nonatomic,retain)IBOutlet UIProgressView *pv;
//...then использовать его в .m файл, как -
Я добавил UIProgressView in UICollectionView 's метод cellForItemAtIndexPath следующим образом;
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"ArticleCell" forIndexPath:indexPath];
pv = [[UIProgressView alloc]init];
pv.frame = CGRectMake(45, 270, 230, 50);
pv.progress = 0.0f;
pv.progressViewStyle = UIProgressViewStyleDefault;
pv.hidden = YES;
[cell.contentView addSubview:pv];
return cell;
}
А потом показывают представление о ходе работы и ее прогресс в didSelectItemAtIndexPath следующим образом;
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
//to show progressview in cell..
UICollectionViewCell *selectedCell = [collView cellForItemAtIndexPath:indexPath];
NSLog(@"subviews - %@",selectedCell.contentView.subviews);
pv = (UIProgressView *)[selectedCell.contentView.subviews objectAtIndex:0];
pv.hidden = NO;
[self performSelector:@selector(checkDownload) withObject:nil afterDelay:1.0];
}
//to check whether all images are downloaded or not and showing progress accordingly
-(void)checkDownload
{
NSError *error;
NSArray* arrArticleImages = [[NSArray alloc]init];
arrArticleImages = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:imgPath error:&error];
NSLog(@"arr cnt-%d",arrArticleImages.count);
if (arrArticleImages.count <= 8)
{
float m = (float)arrArticleImages.count/100;
float t = pv.progress ;
float g = m + t;
pv.progress = g;
NSLog(@"prgs-%f",g);
[self performSelector:@selector(checkDownload) withObject:nil afterDelay:4.0];
}
else
{
pv.progress = 1.0;
[self insertIntoDatabase];
[self performSelector:@selector(goToNewsPaperView) withObject:nil afterDelay:2.0];
}
arrArticleImages = nil;
}
Но теперь проблема состоит в том, что я нажимаю на одну ячейку она начинает показывать progressview с прогрессом, но как только кликни на другую камеру между ними, прогресс первой ячейки останавливается, показывая прогресс и второй ход начинает показывать прогресс ,
Я хочу показать прогресс прогресса каждой ячейки, если она нажата.
Я думаю, что мой подход ошибочен.
Невозможно это выяснить.
Как я могу это сделать ??
Пожалуйста, помогите мне.
Спасибо ..
Спасибо за ваш ответ. Именно так я хочу. Но я не знаю, как это сделать. Не могли бы вы объяснить это кратко или предоставить пример кода? – Rohan
Вы можете взять словарь в качестве переменной экземпляра, добавить представление прогресса к этой dictioanty в cellForIndexPath или didSelectItemAtIndexPath метод, соответствующий пути индекса –
Я благодарю снова брата. Но как я могу добавить pv в словаре? – Rohan