У меня есть приложение с 3 контроллерами представления. Первый генерирует 5-минутный трек, и когда он переходит во второй просмотр, он продолжает играть в setVolume:2.0
, и то же самое касается контроллера третьего вида.
Но на третьем ViewCOntroller
есть UIButton
, которые повторно генерируют первый ViewController
. И когда он возвращается к контроллеру первого представления, он запускает этот звук снова, а предыдущий уже воспроизводится, так что это микс.
Теперь звук был init
на первом ViewController
так как я могу остановить это на третьем ViewController
? Есть ли какой-нибудь код, который останавливает воспроизведение всех звуков?
2 ответа
Вы можете объявить AVAudioPlayer как глобальную переменную в своем первом ViewController. Эффект будет заключаться в том, что каждый экземпляр вашего первого ViewController сможет использовать один и тот же проигрыватель.
AVAudioPlayer *player;
После этого в ViewDidLoad можно сделать что-то вроде этого:
if (!player) {
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[player play];
} else if (!player.playing) {
[player play];
}
Вы можете создать общий экземпляр и вызывать его из всех viewController. Таким образом, вы можете указать, когда нужно останавливать / воспроизводить / загружать и т. Д.
@interface MainAVPlayer : AVAudioPlayer
+ (instancetype)shared;
@end
@implementation MainAVPlayer
+ (instancetype)shared {
static id _sharedInstance = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
@end
При доступе из другого вызова контроллера представления:
[[MainAVPlayer shared] initWithContentsOfURL:url error:&error];
[[MainAVPlayer shared] play];
P / s: возможна опечатка, запись по памяти.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.