我正在制作一个带有splitviewcontroller的应用,并且想要播放视频。
我在拆分视图中有2个控制器。
左(主)是VideoMenuTableViewController
右(详细)是VideoViewController
首先,我通过将我的代码放入viewdidload
的{{1}}来测试视频的效果。
像这样:
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
但是我不明白这个问题,所以我不知道如何解决它。 请帮忙。
更新
通过@PiotrK添加3行代码
Warning: Attempt to present <MPMoviePlayerViewController: 0xb25c440>
on <VideosViewController: 0xb2565d0> whose view is not in the window
hierarchy!
播放视频,但视频完成或解除后,分割视图会停止响应所有内容。
答案 0 :(得分:1)
嗯,自从我使用iOS SDK以来已经有一段时间了,但我会尽力帮忙。
错误说明:您的VideosViewController不在窗口层次结构中。这意味着窗口管理器不知道vvc
VideosViewController的存在。您必须告诉应用程序您确实要显示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];
....
答案 1 :(得分:0)
在.m文件中分配MPMoviePlayerViewController * mp。或.m文件中的接口