Domanda

Ho una tabella delle canzoni sul dispositivo iOS e se seleziono una riga, spingo a una nuova vista in cui Avplayer inizia a suonare la canzone selezionata. Ora se torno indietro e seleziono un'altra riga, spingendo alla vista l'app inizierà a suonare la nuova canzone, mentre continua a suonare quella che era già in esecuzione.

EDIT: ho provato a usare il valore di velocità come questo senza successo, in quanto emetterà sempre "non suonare" se lo metto nel mio metodo ViewDidload, anche se una canzone suona:

- (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");
    }
}
È stato utile?

Soluzione

In questa linea

appDelegate.audioPlayer = [[AVPlayer alloc] init];

Sembra che tu stia assegnando e iniziando un nuovo Avplayer. In quanto tale non sorprende che tu ottenga un risultato "non suonare". Lascia semplicemente fuori quella linea.

Altri suggerimenti

Avplayer ha un rate Proprietà che indica la velocità della riproduzione come galleggiante. 0.0f indica fermato. Il play e stop metodi semplicemente cambiano il rate proprietà.

- (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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top