2012-04-28 17 views
1

ビューにモーダルビューコントローラを表示しようとしましたが、ロードしました。modalViewControllerを表示できません

は、ここでは、コードです:

if (!self.loginNavViewController_){ 

     AHLoginViewController * loginVC = [[AHLoginViewController alloc] initWithNibName:@"AHLoginViewController" bundle:nil]; 

     /* 
     AHTestViewController * test = [[AHTestViewController alloc] initWithNibName:@"AHTestViewController" bundle:nil]; 
     */ 

     UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:loginVC]; 
     navController.modalPresentationStyle = UIModalPresentationFullScreen; 
     navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
     navController.title = @"Login to Instagram"; 

     self.loginNavViewController_ = navController; 
     [self presentModalViewController:self.loginNavViewController_ animated:YES]; 


     if (self.loginNavViewController_ == nil){ 
      NSLog(@"NIL"); 
     } else { 
      NSLog(@"NOT NIL"); 
     } 

}私はモーダルビューコントローラが表示されて表示されていないが

。なぜ??

+6

viewDidLoadでモデルビューを表示するには時期尚早です。 viewWillAppearまたはviewDidAppearで試してみてください。 – jamihash

+0

@ジャミハシュ:答えは+1。私はこれを答えとして投稿する必要があると思います。これは正しい解決策であり、あなたはこの事実を最初に指摘していました。 –

答えて

2

ビューコントローラは、ビューをロードした直後、ビューがビュー階層に挿入される直前にviewDidLoadを受け取ります。言い換えれば、それ自身のビューがまだどのウィンドウにもないので、モーダルビューコントローラを提示することはできません。

代わりにviewWillAppear:またはviewDidAppear:に行ってください。

0

私はあなたがビューで使用することができると思うロードも私はすでにこれを使用しています。

InfoViewController *infoViewController = [[InfoViewController alloc]initWithNibName:@"InfoViewController" bundle:nil]; 
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:infoViewController]; 
[self.navigationController.view addSubview:nav.view]; 

多くのモデルをメインビューに追加しました。

ようこそ。

+0

これは、アニメーションYESのmodalViewを提示するのと同じではないと思います。ユーザーがアニメ化された方法で表示されたり却下されたことを表示しないようにしても同じであってもかまいません。 –

+0

はい、彼もそれを使うことができます。しかし、彼はそれが彼のために良いよりも、サブビューのような現在のモデルビューに追加する必要があります。 – vishiphone

関連する問題