AVPlayer currentTime-Update für einen UISlider beim Laden von ViewController
Ich spiele Songs inAVPlayer
. Ich habe einen separaten Ansichts-Controller für meinen Media Player und die Initialisierung erstellt. Alle Methoden, die ich für den Player verwende (Wiedergabe, Pause, Wiederholung, Zufallswiedergabe), befinden sich im selben Ansichts-Controller.
Ich aktualisiere einen Slider wie diesen:
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(sliderUpdate:) userInfo:nil repeats:YES];`
- (void) sliderUpdate:(id) sender{
int currentTime = (int)((song.player.currentTime.value)/song.player.currentTime.timescale);
slider.value=currentTime;
NSLog(@"%i",currentTime);
song.currentTime=currentTime;
int currentPoint=(int)((song.player.currentTime.value)/song.player.currentTime.timescale);
int pointMins=(int)(currentPoint/60);
int pointSec=(int)(currentPoint%60);
NSString *strMinlabel=[NSString stringWithFormat:@"%02d:%02d",pointMins,pointSec];
lblSlidermin.text=strMinlabel;
song.strslidermin=strMinlabel;
}
Sobald ich den Viewcontroller verlasse und wieder komme, wird der Song abgespielt, aber das Problem ist, dass der Schieberegler nicht aktualisiert wird. Also habe ich eine Singleton-Klasse erstellt, um die Details des gerade spielenden Songs zuzuweisen. Auch innerhalb des Slider-Updates habe ich zugeteiltplayerCurrentTime
(slidercurrent value) für eine Singleton-Klassenvariable. Und meinviewdidload
Methode, die ich so zugewiesen habe:
if (song.isPlaying==NO) {
[self prePlaySong];
}else{
lblAlbum.text=song.currentAlbum;
lblArtist.text=song.currentArtist;
lblSong.text=song.currentSong;
slider.value=song.currentTime;
slider.maximumValue=song.sliderMax;
slider.minimumValue=song.sliderMin;
imgSong.image=song.songImage;
[btnMiddle setBackgroundImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
}
Der Schieberegler wird jedoch nicht aktualisiert. Warum ist das so und wie kann ich dieses Problem lösen?