私は.viewにアクセスしない限り、表示を習慣navigationController iphone
-
19-09-2019 - |
質問
私は私のnavigationControllerにiboutletを作成し、それが何を示していないcurrentviewに追加してみてください。私はコードで私のnavigationControllerを初期化し、それが完璧に動作ビューに追加したときに、その本当に奇妙ます。
私はmainWindows.xibでものを作ると私のapplicationDidFinishLaunchingメソッドでビューに追加するとき、それも動作します。
しかし、すぐに私はそれが失敗し、私は空白の画面が残っています別のViewControllerからそれをロードしようとしてています。
私はプログラム的にそれを追加したり、私のmainWindow.xibでそれを追加するとき、それは動作しますので。
私はそれが働いて取得する時間しようとしています。それはとても簡単なようだが、私はそれが他のXIBファイルで動作させることはできません。
私のセットアップ:
#import "RootViewController.h"
RootViewController *rootViewController=[[RootViewController alloc] init];
[window addSubview:rootViewController.navController.view];
私RootViewControllerはnavigationControllerにibOutletを持っています。
誰もがアイデアを持っていますか?私は完全にこの単純なことが動作しない理由を理解しません。私はそのは私が狂いそう、何をしないのです。
**** **** UPDATE 私はそれを変更した場合、上記のコードは動作します: 私はrootViewController.viewをアクセスもする必要があり、それ以外の場合は、なぜ動作しないのだろうか?
#import "RootViewController.h"
RootViewController *rootViewController=[[RootViewController alloc] init];
if(rootViewController.view){
NSLog(@"nil");
}
[window addSubview:rootViewController.navController.view];
事前に感謝します!
解決
view
が実際に(オンデマンド)なまけコントローラのビューを作成するゲッターを呼び出すためにこのです。あなたが最初rootController
getterメソッドを呼び出すまで、view
のview
は存在しません。最初のアプリビューを作成するための通常の方法がある。
[window addSubview:someController.view]
と、それは、ビューを作成するの面倒を見ます。
他のヒント
この問題は、常に私はInterface Builderで何かを接続するために忘れてしまったということであった私に起こったすべての回。お使いのコントローラがアプリのデリゲートまたはどこにrootViewControllerコンセントに接続されていることを確認してください。また、ウィンドウが接続されていることを確認します。
何かが接続されて取得していない場合self.rootViewController.navController.viewがnilであるとサブビューIとしてnilを追加しようと[[ゼロからNavController]ビュー]なってしまうので、あなたは、コンセントにゼロで終わります思います。ウィンドウがnilの場合は、同様にゼロに話してしまうが、それが接続されていませんおそらくrootViewControllerいます。
私は、実際にも奇妙同様の問題を抱えているコントローラをiPadでなくiPhone上のアプリ負荷が細かいだけIBに接続されているとき、私は空白の画面を有し、デバッガは、コントローラのビューがどのフレームを有することを示します0、0、0、0であります 私はApplicationDidFinishLaunchingのコードでrootviewcontroller口をリセットすることにより、それを修正したが、これは動作していない理由を私は理解していない