سؤال

لدي تطبيق يعرض الأفلام.تعرض الشاشة الأولى الأزرار التي تقدم طرق عرض مشروطة مختلفة.يوجد داخل طرق العرض المشروطة هذه أزرار لتشغيل مقاطع الفيديو.

أريد أن تقوم القائمة الرئيسية بتشغيل الموسيقى (سهلة بما فيه الكفاية)، ولكن أريد أن تستمر خلال العرض المشروط الثاني ولكن تتوقف عندما يبدأ تشغيل الفيديو.

لقد حاولت [إيقاف مشغل الصوت] عند الضغط على أزرار الأفلام، لكن الموسيقى تستمر في التشغيل.

لقد حاولت إيقاف الصوت وتشغيله في viewDidAppear وviewDidDisappear.وقد أدى ذلك إلى إعادة تشغيل الصوت عند تقديم العرض الثاني وعدم تشغيله أثناء الفيديو.

آمل أن يكون هذا منطقيًا، فأنا حقًا بحاجة إلى فكرة عن كيفية تشغيل الصوت طوال الوقت (خلال عرضين أو ثلاثة مشروطين) باستثناء أثناء تشغيل الفيلم.

هنا بلدي vewDidAppear طريقة:

-(void)viewDidAppear:(BOOL)animated {
   NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"]; 
   if(musicPath) {
     NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
     [musicURL release]; 
   }
   if(!audioPlayer.playing) {
     [audioPlayer play]
   }
}
هل كانت مفيدة؟

المحلول

تحاول وحدة التحكم في العرض المشروط إيقاف audioPlayer الذي لا يوجد بداخله.ال mainMenueViewController لديه audioPlayer, ، لذا هو - هي يجب أن يكون هو الشخص الذي يطلب من مشغل الصوت أن يتوقف.

يمكنك استخدام NSNotifications لهذا الغرض.كل إشعار NS يتم إرسالها من خلال المفردة NSNotificationCenter.فيما يلي الخطوات الأساسية لموقفك:

  1. تسجل قائمتك الرئيسية الإشعارات عندما تكون جاهزة.
  2. تحتوي قائمتك الرئيسية على طرق للاتصال عند إطلاق الإشعارات.
  3. تقوم القائمة الفرعية بإطلاق طريقة عندما تحتاج إلى إيقاف تشغيل الصوت.
  4. يتم إلغاء تسجيل قائمتك الرئيسية عندما تكون جاهزة للإغلاق.

أتمنى أن يساعدك هذا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top