0

私のアプリケーションでは、MPMoviePlayerControllerを使用してファーストクラスXIBでビデオを実行します。ビデオの長さは約20秒です。ビデオが終了すると、自動的にセカンドクラスXIBを呼び出します。これが私のコードです。

     -(void)viewWillAppear:(BOOL)animated
       {
         NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"3idiots.mov" ofType:nil];
         NSURL *url = [NSURL fileURLWithPath:urlStr];
         videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
         [self.view addSubview:videoPlayer.view];
         videoPlayer.view.frame = CGRectMake(0, 0,768, 1000);  
         [videoPlayer play];
         [self performSelector:@selector(gotonextview)];

         }
      -(void)gotonextview
        {
         secondview *sec=[[secondview alloc] initWithNibName:@"secondview" bundle:nil];
         [self presentModalViewController:sec animated:YES];
         [sec release];

        }

このコードは私にエラーを与えませんが、ビデオの完了後にセカンドクラスを呼び出すことはありません。よろしくお願いします

4

3 に答える 3

3

これはすべてドキュメントで説明されています...iOSバージョン間でさまざまな動作もあります。

viewWillAppearからgotonextviewを呼び出さないでください。代わりに、ビューコントローラをviewDidLoadのMPMoviePlayerPlaybackDidFinishNotificationおよびMPMoviePlayerDidExitFullscreenNotificationのオブザーバーとして登録し、セレクタとしてgotonextview:(NSNotification *)notificationを使用します。

また、viewWillAppearではなくviewDidAppearからムービープレーヤーを起動することをお勧めします。

編集:適応されたオリジナルのポスターコード(テストされていない)...

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gotonextview:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gotonextview:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
}

-(void)viewDidAppear:(BOOL)animated
{
    NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"3idiots.mov" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:urlStr];
    videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.view addSubview:videoPlayer.view];
    videoPlayer.view.frame = CGRectMake(0, 0,768, 1000);  
    [videoPlayer play];
}

-(void)gotonextview:(NSNotification *)notification
{
    NSDictionary *notifDict = notification.userInfo; // Please refer Apple's docs for using information provided in this dictionary

    secondview *sec=[[secondview alloc] initWithNibName:@"secondview" bundle:nil];
    [self presentModalViewController:sec animated:YES];
    [sec release];

}
于 2012-06-01T11:19:24.747 に答える
0

1つのオプションは次のとおりです。

2つのタブを持つtabBarControllerを使用します。ビデオを1つのタブに配置し、「2番目のビュー」を2番目のタブに配置します。次に使用します

self.tabBarController.selectedIndex=2;
于 2012-06-01T11:13:46.630 に答える
0

より良い方法は、タイマーを使用するか、イベントリスナーをビデオプレーヤーに登録することです。

例はhttp://mobiledevelopertips.com/cocoa/basics-of-notifications.htmlにあります。

于 2012-06-01T11:32:38.713 に答える