実験目的のために、私は完全にコードで何かを試しています。完全にプログラムで作成されたUIView/UIViewControllerの場合、loadViewとviewDidLoadの違いは何ですか?
RootViewとRootViewControllerと呼ばれるカスタムルートUIView
/UIViewController
のサブクラスがあります。
また、RenderViewとRenderViewControllerと呼ばれるGLKView
/GLKViewController
サブクラスのペアがあります。
UIViewController
のサブクラスは、いずれもloadView
オーバーライドで管理されたビューを作成します。
メインRootViewController/RootViewの設定は簡単です。私AppDelegateのサブクラスでは、私は、メインウィンドウを作成し、そのようrootViewControllerのproeprtyを割り当てる...
#import "AppDelegate.h"
#import "RootViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
// Set up the window
UIWindow* mainWindow = [[UIWindow alloc] initWithFrame:screenBounds];
mainWindow.rootViewController = [RootViewController new];
self.window = mainWindow;
[mainWindow makeKeyAndVisible];
return YES;
}
@end
RootViewは1つが期待するとおりに画面に表示されます。
私はしかし、ビュー階層の初期化については不思議だ。 RootViewControllerにはRenderViewControllerのインスタンスを保持するプロパティがあり、そのRenderViewはrenderViewFrameというRootViewControllerの2番目のプロパティに格納されているフレームに(最初に)配置されます。
私の質問は、その階層を設定するための適切な場所はどこですか?そう、これは...私がやっている
- (void)loadView
{
self.view = [[RootView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Set up the RenderViewController
RenderViewController* renderViewController = [RenderViewController new];
[self addChildViewController:renderViewController];
renderViewController.view.frame = self.renderViewFrame;
[self.view addSubview:renderViewController.view];
self.renderViewController = renderViewController;
}
です...そして、それは動作しますが、私は何人かの人々が言うのを見てきましたためUIViewController
のloadView
が正確に何
ドキュメントの状態いいえ、RenderView/RenderViewControllerの作成に関するすべてをRootViewControllerのviewDidLoad
に移動し、loadView
ではなく移動する必要がありますが、誰もその理由を言うことはできません。私はそれが階層の一部であり、具体的にはloadView
が対象であることを意味します。
loadView
で既に初期化を行っている場合は、私は誰でも/誰でもviewDidLoad
を使用する必要がありますか、またはメモリがビューをすべてアンロードするときのアーティファクトだけですiOS6では?
それに基づいて、私は後にIBoutletを例にしてより明確にすることができると思います。 RenderViewControllerプロパティの私の設定は、IBがアウトレットで何をしているのと同じです。では、IBはこれらのアウトレットをどこで設定しますか?loadView、viewDidLoad、またはその2つの間? – MarqueIV
ほとんどの場合、 'loadView'にはIIRCがありますが、それ以降にいくつかのことが行われていますが、今は何が覚えていないのでしょうか(おそらく私は' awakeFromNib'を考えています) – Wain
本当は、 。私はワインとほぼ同じコメントを書くつもりだった。 – DarkDust