2013-04-08 21 views
7

Pracuję nad aplikacją IOS (z Storyoard). Mam ViewController:IOS MPMoviePlayerViewController Ładowanie bez końca

//movieViewController.h 

#import <UIKit/UIKit.h> 
#import <MediaPlayer/MediaPlayer.h> 

@interface movieViewController : UIViewController { 

    MPMoviePlayerViewController *moviePlayer; 

} 

@property (strong, nonatomic) MPMoviePlayerViewController *moviePlayer; 
-(void) playMovie; 

@end 


//movieViewController.m 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view. 
    [self playMovie]; 
} 

-(void)playMovie 
{ 
    NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"movie" 
                 ofType:@"mov"]; 

    moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL 
                fileURLWithPath:videoPath]]; 
[self presentMoviePlayerViewControllerAnimated:moviePlayer]; 
} 

Kiedy biegnę widzę viewController z „Loading ...”, która trwa wiecznie. enter image description here

+1

Nie powinieneś poczekać aż viewDidAppear wezwanie przed wywołaniem [self playMovie]? – sixthcent

Odpowiedz

1

Powinieneś zadzwonić pod numer -prepareToPlay i/lub -play. Zgodnie z dokumentacją: :

Począwszy od wersji iOS 5.0, aby ułatwić precyzyjne sterowanie odtwarzaniem, nowy odtwarzacz filmów nie jest automatycznie przygotowany do odtwarzania.

+0

Miksujesz MPMoviePlayerController i MPMoviePlayerViewController. – Till

+1

MPMoviePlayerViewController ma właściwość 'moviePlayer', która jest obiektem MPMoviePlayerController. – zadr

+0

To prawda, ale nie ma potrzeby dostępu do tej nieruchomości w celu osiągnięcia tego, o co poprosił OP. MPMoviePlayerViewController robi to po wyjęciu z pudełka. – Till

0
-(IBAction)startVideo:(id)sender 
{ 
    NSURL *video = [[NSURL alloc] initWithString:@"http://www.w3schools.com/html/movie.mp4"]; 
    MPMoviePlayerViewController *controller = [[MPMoviePlayerViewController alloc]initWithContentURL:video]; 
    controller.view.frame = CGRectMake(20, 50, 280, 180); 

    controller.moviePlayer.view.center = self.view.center; 
    [self.view addSubview:controller.view]; 

    [controller.moviePlayer prepareToPlay]; 
    [controller.moviePlayer play]; 
}
+1

Czy możesz dodać tekst do wyjaśnienia swojego rozwiązania, proszę? – GHC