Вопрос

У меня есть таблица песен на устройстве iOS, и если я выберу ряд, я привязываю новый вид, где AvPlayer начинает играть в выбранную песню. Теперь, если я вернусь и выберу еще одну строку, настаивая на представление, которое приложение начнет играть в новую песню, в то время как продолжайте воспроизводить ту, которая уже работает.

РЕДАКТИРОВАТЬ: Я пытался использовать такое значение такого уровня без успеха, так как он всегда будет выводить «не воспроизводить», если я помесчу его в свой метод ViewDiddload, даже если песня играет:

- (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. Таким образом, неудивительно, что вы получите результат «не играть». Просто оставьте эту линию.

Другие советы

У 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