私はプログラミングにかなり新しいです。ストーリーボードの読み込み順序
現時点で私は次の問題について不思議です。関数didFinishLaunchingWithOptions内AppDelegate.mで :(...)私は のようなビジュアルツリーを歩くしようとしたが(注:mainstoryboardはTabBarControllerを持っており、最初のビューの上に一つのボタンがあり
UIView *sv;
sv=[window subviews];
for(sv in mwSubViews){
NSLog(@"Subview's %d Description : %@ \n",i++,[sv description]);
NSLog(@"Views Bounds: %@ :\n",sv.bounds);
NSLog(@"Views Frame: %@ :\n",sv.frame);
。 }
私はストーリーボードから要素を制御するのViewController内これを行うと、その出力は
ViewsAnimationTouchDrawing [59046:F803] ..ですその上にいくつかのものを持つ単一のストーリーボードを使用していサブビューの0説明: > 2012-04-16 20:32 :48.362 ViewsAnimationTouchDrawing [59046:F803]回数境界:(ヌル): 2012-04-16 20:32:48.363 ViewsAnimationTouchDrawing [59046:F803]ビューフレーム(ヌル):
月s.o.私を説明するのがいいのですが、なぜですか? (私は窓がすでに初期化され、その上にUIViewのを持っていると思った...)
**更新
私は現在のウィンドウビュー階層についての本を読んでいます。 作者は、通常、UIWindowクラスのインスタンスが1つ存在すると言います。 UIApplicationのデリゲートは、その参照を保持しています。私はアプリケーション内で.xibファイルを少し演奏しました。私は手動でウィンドウの参照にデリゲート以内にそれを割り当て、XIBファイルからウインドウをロードする場合、私は
UIWindow *mw = [[UIApplication sharedApplication] keyWindow];
でウィンドウへの参照を取得することができ、私は機能
-(void) runDownSubViewsWithCavemanDebug : (UIView*) view{
NSArray *mwSubViews = [view subviews];
static int i=0;
if([mwSubViews count]==0) return;
UIView *sv;
for(sv in mwSubViews){
NSLog(@"Subview's %d Description : %@ \n",i++,[sv description]);
NSLog(@"Views Bounds: %@ :\n",sv.bounds);
NSLog(@"Views Frame: %@ :\n",sv.frame);
[self runDownSubViewsWithCavemanDebug:sv];
}
}
でビジュアルツリーを歩くことができます
私はしかし、ストーリーボードを使用している場合(didFinishLaunchingWithOptionsで関数の呼び出し)
MainViewController *myMainVC = [[MainViewController alloc] init];
NSArray *bundleResources = [[NSBundle mainBundle]loadNibNamed:@"View" owner:myMainVC options:nil];
UIWindow *mainWindow = [bundleResources objectAtIndex:0];
self.window = mainWindow;
self.window.rootViewController = myMainVC;
、私は.. keyWindowでウィンドウの参照を取得することはできません。 私は、ウィンドウへの参照を取得しますが、ウィンドウは(私はそれが初期化されてきたべきであると考えられている)そのサブビューで要素がない
UIWindow *realmw = [[[UIApplication sharedApplication]delegate] window];
でそれを得ることができます。
ええと、私はちょうどそれについて疑問に思います。アップルはストーリーボード内のビュー階層を何らかの形で分割しましたか?
これは正しいです。明確にするために私の答えを少し調整しました。 – jonkroll
あなたの投稿をありがとう。私はそれから学び、私は私の混乱を明確にするために私のポストを更新しました – Schemiii