2012-02-01 8 views
0

UIViewControllerをプッシュする次のコードがあります。このコードはUIButtonが押されたときに実行されますターゲットメソッドです:UIViewControllerを押し込むとクラッシュする

-(void)pushNavigationController 
{ 
    ParameterListerViewController *plvc = [[ParameterListerViewController alloc] init];  
    UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:plvc];  
    self.navigationController.navigationBarHidden = YES; 
    plvc.numberOfParameters = [[numberOfTrialsField text] intValue]; 

    NSLog(@"about to push the navigation controller"); 

    [self.navigationController pushViewController:nvc animated:YES]; 
} 

それはのNSLog声明まで取得しますが、その後、ビューコントローラがプッシュされることは決してありませんし、アプリだけでクラッシュします。ここでParameterListerViewControllerのヘッダファイルである:

ParameterListerViewController.h 
------------------------------- 
@interface ParameterListerViewController : UIViewController<UITextFieldDelegate> 
{  
    UIScrollView* scrollView; 
} 
@property(nonatomic) NSInteger numberOfParameters; 
@end 

ここUIButtonとナビゲーションコントローラをプッシュするためのコードが含まれている各ターゲットメソッドが含まれているヘッダファイルです。

@interface ItemViewController : UITableViewController 
{ 
} 
@end 

任意の提案:

SettingsViewController.h 
------------------------ 
@interface SettingsViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, UITableViewDelegate, UITableViewDataSource> 
{ 
    id <SettingsViewDelegate> delegate; 
} 
@end 

そして、ここではプッシュされますDOESクラスオブジェクトのヘッダーファイルですか?

+0

ナビゲーションコントローラを別のコントローラの上に押し込もうとしているのはなぜですか? – Rog

+0

'self.navigationController pushViewController:plvc animated:YES'を試してください – Rog

+0

残念ながら、これもクラッシュします。私は 'plvc'を先に押してみたことを忘れていました。私は完全に新しいプロジェクトを作成しました。(それはそれらのミステリーバグの1つではないことを確認するためです)、まだ動作しません。私は質問にいくつかの詳細を追加しました。 – Ravi

答えて

0

ナビゲーションコントローラのビューは、ビュー階層内にある必要があります。
navコントローラがUIWindowのrootViewControllerとして設定されていない限り、明示的に追加する必要があります。

これを試してみてください:

[self.view addSubview:self.nvc.view]; 

をこのような場合、あなたはpushViewControllerを行う必要がありません - plvcはすでに表示されます。

+0

投票のコメントはどうですか? – Rayfleck

+0

あなたの言うことは正しいですが、彼の質問に対する答えではありません。彼の間違いはUIViewControllerではなくUINavigationControllerを押していることです。 Rogさんのコメントが正解です。 – jsd

+0

OPのナビゲーションコントローラビューがまだビュー階層にないので、Rogの答えはこれを部分的にしか解決しません。 (それはウィンドウのrootViewControllerではないので表示されず、表示されません) – Rayfleck

関連する問題