0

簡単に説明します。コードは次のとおりです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
VideoEntry *entry = [videoEntries objectAtIndex:indexPath.row];

[HCYoutubeParser h264videosWithYoutubeURL:[NSURL URLWithString:entry.url] completeBlock:^(NSDictionary *videoDictionary, NSError *error) {
    NSArray *urls = [videoDictionary allValues];
    NSURL *url = [NSURL URLWithString:[urls objectAtIndex:0]];
    [mp.moviePlayer setAllowsAirPlay:YES];
    [mp.moviePlayer setContentURL:url];
    [mp.moviePlayer prepareToPlay];
    [mp.moviePlayer play];
    [self presentMoviePlayerViewControllerAnimated:mp];
}];

}

mp は MPMoviePlayerViewController です。View Controller が表示されますが、ムービーは開始されず、「読み込み中...」とだけ表示されます。質問する前に、リンクが機能することを 100% 確認しています。

ありがとう!

4

1 に答える 1

1

メインスレッドで完了ブロックが呼び出されないため、機能しません。メインスレッドでコードを強制的に実行することで解決できます。

[HCYoutubeParser h264videosWithYoutubeURL:[NSURL URLWithString:entry.url]
                            completeBlock:^(NSDictionary *videoDictionary, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^(void) {
        NSArray *urls = [videoDictionary allValues];
        NSURL *url = [NSURL URLWithString:[urls objectAtIndex:0]];
        [mp.moviePlayer setAllowsAirPlay:YES];
        [mp.moviePlayer setContentURL:url];
        [mp.moviePlayer prepareToPlay];
        [mp.moviePlayer play];
        [self presentMoviePlayerViewControllerAnimated:mp];
    });
}];
于 2013-03-11T16:46:06.100 に答える