Agregue UIProgressBar a UITableViewCell

Tengo un requisito para mostrar un UIProgressBar en UITableviewCell mientras se transmite un clip de audio.

Intenté ejecutar un NSTimer y luego NSTimer actualizar la vista de progreso, pero no funciona. Este es mi codigo Por favor, hágamelo saber cuál es el problema con este enfoque.

Ejecutar el timer

 self.timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(updatePlayProgress) userInfo:nil repeats:YES]; 

Actualice UIProgressView en TableviewCell

 - (void)updatePlayProgress { AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; NSLog(@"Duration %f", appDelegate.moviePlayer.duration); NSLog(@"Current time %f", appDelegate.moviePlayer.currentPlaybackTime); float timeLeft = appDelegate.moviePlayer.currentPlaybackTime/appDelegate.moviePlayer.duration; // upate the UIProgress NSIndexPath *indexPath = [NSIndexPath indexPathForRow:playingIndex inSection:0]; FeedCell *cell = (FeedCell*)[self tableView:self.tblView cellForRowAtIndexPath:indexPath]; NSLog(@"Time left %f", timeLeft); cell.progressPlay.progress = 0.5; [cell.progressPlay setNeedsDisplay]; } 

CellForRowAtIndexPath

 fCell.progressPlay.alpha = 0.5; fCell.progressPlay.tintColor = navigationBarColor; [fCell.progressPlay setTransform:CGAffineTransformMakeScale(fCell.frame.size.width, fCell.frame.size.height)]; [fCell.progressPlay setHidden:NO]; return fCell; 

La salida debería ser algo similar a esto

introduzca la descripción de la imagen aquí

Al final encontró el problema después de casi 2 días 🙁 🙁 Error estaba en esta línea

Incorrecto

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:playingIndex inSection:0]; FeedCell *cell = (FeedCell*)[self tableView:self.tblView cellForRowAtIndexPath:indexPath]; 

Corregido

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:playingIndex inSection:0]; FeedCell *cell = (FeedCell*)[self.tblView cellForRowAtIndexPath:indexPath]; 

Cuando llamas a [self.tblView reloadData] estás configurando la barra de progreso nuevamente a 0.0 en la siguiente línea fCell.progressPlay.progress = 0.0 . Eliminar la llamada para reloadData a reloadData .