0

我正在制作一个带有 splitviewcontroller 的应用程序并想播放视频。

我在拆分视图中有 2 个控制器。左(主)是VideoMenuTableViewController 右(细节)是VideoViewController

首先,我通过将我的代码放入viewdidload.VideoViewController

像这样:

- (void)viewDidLoad
{
    [super viewDidLoad];
self.URLForVideoFile = @"http://api.smit-it.info/TEST/VIDEO/two.mov";
    NSURL *fileURL = [NSURL URLWithString:self.URLForVideoFile];

    MPMoviePlayerViewController *mp = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];

    [self presentMoviePlayerViewControllerAnimated:mp];

}

这有效并且视频播放。

现在我尝试通过触摸VideoMenuTableViewController.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *SelectedUrl;
    SelectedUrl = [[[self.dataSource.videos valueForKey:@"URL"] objectAtIndex:0] objectAtIndex:indexPath.row];

    NSLog(@"URL pressed %@",SelectedUrl);

    VideosViewController *vvc = [[VideosViewController alloc] init];
    vvc.URLForVideoFile = SelectedUrl;

    [vvc PlayMovieFromSelectedUrl];

}

在哪里与 应用程序崩溃并给出以下错误PlayMovieFromSelectedUrl中的代码相同。viewdidload

Warning: Attempt to present <MPMoviePlayerViewController: 0xb25c440>
on <VideosViewController: 0xb2565d0> whose view is not in the window
hierarchy!

但我不明白这个问题,所以我不知道如何解决它。请帮忙。


更新

通过 @PiotrK 添加 3 行代码

UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow];
[keyWindow addSubview: vvc.view];
[self presentViewController:vvc animated:NO completion:nil];

视频播放,但当视频播放完毕或关闭时,拆分视图停止响应所有内容。

4

2 回答 2

1

好吧,自从我使用 iOS SDK 以来已经有一段时间了,但我会尽力提供帮助。错误说明:您的 VideosViewController 不在窗口层次结构中。这意味着窗口管理器不知道vvcVideosViewController 的存在。您必须告诉应用程序您实际上想要显示vvc。试试这个方法:

...

VideosViewController *vvc = [[VideosViewController alloc] init];
vvc.URLForVideoFile = SelectedUrl;

UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow];
[keyWindow addSubview: vvc.view];
[self presentViewController:vvc animated:NO completion:nil];

[vvc PlayMovieFromSelectedUrl];

....
于 2013-09-18T10:43:09.987 回答
0

在 .h 文件中分配 MPMoviePlayerViewController *mp..或在 .m 文件中分配接口

于 2013-09-18T10:41:23.520 回答