في هذا الخط
appDelegate.audioPlayer = [[AVPlayer alloc] init];
يبدو أنك تخصيص ويبدأ "لاعب جديد". على هذا النحو ، ليس من المستغرب أن تحصل على نتيجة "لا تلعب". ببساطة اترك هذا الخط.
سؤال
لدي عرض Tableview للأغاني على جهاز iOS ، وإذا قمت بتحديد صف ، فأنا أضغط إلى عرض جديد حيث يبدأ Avplayer في تشغيل الأغنية المحددة. الآن إذا عدت وحددت صفًا آخر ، فسيبدأ الضغط على العرض في تشغيل الأغنية الجديدة ، مع الاستمرار في تشغيل المجموعة التي كانت تعمل بالفعل.
تحرير: لقد حاولت استخدام قيمة معدل مثل هذا دون نجاح ، حيث ستخرج دائمًا "لا تلعب" إذا وضعتها في طريقة ViewDidload الخاصة بي ، حتى لو كانت أغنية يتم تشغيلها:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.audioPlayer = [[AVPlayer alloc] init];
if (appDelegate.audioPlayer.rate == 0.0f)
{
NSLog(@"not playing");
} else {
NSLog(@"already playing");
}
}
المحلول
في هذا الخط
appDelegate.audioPlayer = [[AVPlayer alloc] init];
يبدو أنك تخصيص ويبدأ "لاعب جديد". على هذا النحو ، ليس من المستغرب أن تحصل على نتيجة "لا تلعب". ببساطة اترك هذا الخط.
نصائح أخرى
Avplayer لديه rate
الخاصية التي تشير إلى سرعة التشغيل كتعويم. 0.0f
يشير إلى توقف. ال play
و stop
الأساليب فقط تغيير rate
منشأه.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
appDelegate = (SimpleTableAppDelegate *)[[UIApplication sharedApplication] delegate];
//Stop potential existing audioPlayer prior to creating new player
[appDelegate.audioPlayer stop];
//Create new audio player
appDelegate.audioPlayer = [[AVPlayer alloc] init];
}