質問

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を割り当て、開始しているようです。そのため、「プレイしない」結果を得ることは驚くことではありません。単にその行を除外してください。

他のヒント

avplayerはaを持っています rate フロートとしての再生速度を示すプロパティ。 0.0f 停止したことを示します。 playstop メソッドを変更するだけです 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