0

Я буду держать это простой, Херес код:MPMoviePlayerViewController не играет

- (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]; 
}]; 

}

тр является MPMoviePlayerViewController. Контроллер представления представлен, но потом фильм не запускается, он просто говорит «Загрузка ...», и прежде чем спросить, я на 100% уверен, что ссылки работают.

Спасибо!

+0

ты пользуешься ARC Как у вашего экземпляра Тпл? – limon

+0

Я использую ARC, я просто сделал неатомное, сильное свойство – user1734282

ответ

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]; 
    }); 
}]; 
+0

Да, большое вам спасибо! – user1734282

Смежные вопросы