0

splitviewcontroller を使用してアプリを作成していて、ビデオを再生したいと考えています。

分割ビューに 2 つのコントローラーがあります。左(マスター)はVideoMenuTableViewController 右(ディテール)VideoViewController

最初に、自分のコードをviewdidloadofに配置して、ビデオが機能するかどうかをテストしました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];

}

アプリ がクラッシュし、次のエラーが発生しますPlayMovieFromSelectedUrlviewdidload

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 はウィンドウ階層にありません。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];

....
于 2013-09-18T10:43:09.987 に答える
0

MPMoviePlayerViewController *mp を .h ファイルに割り当てます..またはインターフェイスを .m ファイルに割り当てます

于 2013-09-18T10:41:23.520 に答える