سؤال

لدي عرض 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];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top