0

GDataFeedYouTubeVideo を使用して、テーブルビューに画像とタイトルを入力しています。これは機能します。セルが選択された後にビデオを再生したい。フィードからの URL を使用して MPMoviePlayer に渡していますが、画面が真っ暗になり、moviePlaybackDidFinish が呼び出されたために読み込まれたように見えますが、ビデオは再生されず、テーブルビューの表示に戻りますか? フィードの URL の例は次のとおりです。

https://www.youtube.com/v/o7QAMH3qRvU?version=3&f=user_uploads&app=youtube_gdata

これはブラウザーからは機能しますが、MPMoviePlayer では機能しませんか? これを理解するのを手伝ってください。フィードから返される URLString を置換または削除するためのハック ルーチンを作成する必要はありません。ARCとストーリーボードを使用しています。2 回目にセルを選択すると、次のようになります。

クラス AVPlayerItem のインスタンス 0xce6a7b0 の割り当てが解除されましたが、キー値オブザーバーがまだ登録されていました...

はい、私はで提案されたことを試しました: iOS 5 AVPlayerItem のインスタンスが割り当て解除されましたが 、これは修正されませんでした。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    YouTubeVideo *item = [searchList objectAtIndex:indexPath.row];

    if (item != nil) {
        NSURL *url = [NSURL URLWithString:item.URLString];
        moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(moviePlaybackDidFinish:)
                                                     name:MPMoviePlayerPlaybackDidFinishNotification
                                                   object:moviePlayer];
        moviePlayer.controlStyle = MPMovieControlStyleDefault;
        moviePlayer.shouldAutoplay = YES;
        [self.view addSubview:moviePlayer.view];
        [moviePlayer setFullscreen:YES animated:YES];
    }
}

- (void)moviePlaybackDidFinish:(NSNotification *)notification {
    MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:player];

    if ([player respondsToSelector:@selector(setFullscreen:animated:)])
        [player.view removeFromSuperview];
}
4

1 に答える 1