2012-03-16 14 views
2

私のプロジェクトで問題が発生しました。プッシュされたUIViewControllerからルートUINavigationControllerにアクセス

プッシュされたUIViewControllerから私のUINavigationControllerにアクセスしようとするたびに、私は "(null)"を返します。

正常に動作します
MyClass *theChatRoom = [[MyClass alloc] initWithNibName:@"ChatRoom" bundle:nil]; 
[theChatRoom setTitle:[unitCode text]]; 
[self.navigationController pushViewController:theChatRoom animated:YES]; 

が、それはプッシュ:

1. AppDelegate.m initalises UINavigation Controller 
2. UINavigation Controller starts with Welcome Page 
3. Welcome Page Pushes New UIViewController on Button Press 
4. UIViewController returns (null) when self.navigationController called 

OKは、ので、ここで私はこれを呼んでいる私のウェルカムページでは、いくつかのコードです:

は、これが私のプロジェクトが構成されています新しいView Controller。 MyClass.mで

しかし、その後:

@implementation MyClass 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     NSLog([NSString stringWithFormat:@"%@",self.navigationController]); 
    } 
    return self; 
} 

このリターン(ヌル)私が間違っているのは何

答えて

2

ドキュメントをよれば、navigationControllerUIViewControllerの:ビューコントローラは ナビゲーションコントローラの内部に埋め込まれていない場合、このプロパティがnil

。あなたは(まだ押さない)UINavigationControllerに埋め込む前navigationControllerにアクセスする場合は、言われています

は、nilを返します。したがって、viewDidLoadではアクセスできますが、- (id)initWithNibName:bundle:にはアクセスできません。

+0

しかし、私はこれをしようとしています。 'UIBarButtonItem * backButton = [[UIBarButtonItem alloc] initWithTitle:@" Back "スタイル:UIBarButtonItemStyleBordereredターゲット:なしアク​​ション:なし; [[[self navigationController] navigationItem] setBackBarButtonItem:backButton]; 'それを動作させることはできません。 何がありますか? – Moe

+0

Nevermindは、View Controller自体ではなく、親View ControllerでBackボタンを設定する必要があることを発見しました。 – Moe

+0

本当に複雑なプロジェクトでこれをやっただけで、価値があるものはviewDidLoadのnon nilに割り当てられませんでした。私が行っているプロジェクトでは、いくつかの醜いハッキングがあるかもしれません。クリーンなプロジェクトでこれを試してみましょう。 – cynistersix

関連する問題