Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在应用程序代理中调用MPMoviePlayerViewController_Ios_Objective C_Mpmovieplayercontroller - Fatal编程技术网

Ios 在应用程序代理中调用MPMoviePlayerViewController

Ios 在应用程序代理中调用MPMoviePlayerViewController,ios,objective-c,mpmovieplayercontroller,Ios,Objective C,Mpmovieplayercontroller,我正在应用程序中使用故事板。 使用情节提要,所有视图都已正确连接 现在我想做的新事情是 当我的启动屏幕关闭时,我想在用户每次打开应用程序时显示3秒的视频 我知道如何从viewcontroller加载视频, 下面是我用来启动视频的代码 - (void)showVideo { [super viewDidLoad]; // Do any additional setup after loading the view. NSString *path = [[NSBundle

我正在应用程序中使用故事板。 使用情节提要,所有视图都已正确连接 现在我想做的新事情是

当我的启动屏幕关闭时,我想在用户每次打开应用程序时显示3秒的视频

我知道如何从viewcontroller加载视频, 下面是我用来启动视频的代码

- (void)showVideo
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"video path :- %@",url);
    videoController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    videoController.moviePlayer.controlStyle = MPMovieControlStyleNone;
    [self presentMoviePlayerViewControllerAnimated:videoController];
    [videoController.moviePlayer play];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:videoController];
}

- (void) moviePlayBackDidFinish:(NSNotification*)_notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:nil];

    [videoController.view removeFromSuperview];
    [videoController.moviePlayer stop];
    videoController = nil;
    [self.view removeFromSuperview];
}
但是当我在我的rootViewController应用程序中使用此代码时

Attempt to present <MPMoviePlayerViewController:> on <DashbaordVC:> whose view is not in the window hierarchy
然后,我考虑将此代码添加到AppDelegate文件中,并从
ApplicationIDFinishLaunching

但是没有帮助。 谁能指引我。。。。同样
还有如何在应用程序委托中添加
mpmovieplayervcontroller

我想你可以通过mpmovieplayervcontroller来完成。尝试以下代码

         NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
         NSURL *url = [NSURL fileURLWithPath:path];

        videoPlayer = [[MPMoviePlayerController alloc] init];
        [videoPlayer.view setFrame:CGRectMake(0.0, viewTopbar.frame.size.height,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - (viewTopbar.frame.size.height + 50.0))];
                [videoPlayer setMovieSourceType:MPMovieSourceTypeFile];

        [videoPlayer setContentURL:url];
        [videoPlayer setControlStyle:MPMovieControlStyleEmbedded];
        [videoPlayer setScalingMode:MPMovieScalingModeNone];
        [videoPlayer prepareToPlay];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:videoPlayer];

       [self.view addSubview:videoPlayer.view];
       [videoPlayer play];
如果你不想要全屏,那么就这样使用它

[videoPlayer setControlStyle:MPMovieControlStyleNone];

请添加您在应用程序中使用的导致问题的代码。您正在从ViewDidLoad调用showVideo方法,对吗?是的,从ViewDidLoad调用方法:-相同的代码适用于iOS 8.1,但我的应用程序在8.3上崩溃。当你点击视频时,8.3crash有什么变化吗?没有,我不想点击视频。我想在启动屏幕一关闭就启动它。所以我在rootviewcontroller中添加了这段代码,并从ViewDidLoad中调用了showVideo方法。我想,我是从导航中得到这个问题的,由于代码使用故事板进行导航,我得到的问题类似于试图在其视图不在窗口层次结构中的情况下显示。您不需要显示它,只需简单地将其作为子视图添加到视图中,然后在调用didfinish时删除视图
[videoPlayer setControlStyle:MPMovieControlStyleNone];