Я новичок в программировании iOs ..Загрузка последовательности раскадровки
На данный момент я задаюсь вопросом о следующей проблеме. в AppDelegate.m внутри функции didFinishLaunchingWithOptions: (...) я пытался идти вниз визуальное дерево как (. Примечание: mainstoryboard имеет TabBarController и на начальном View есть одна кнопка
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] Просмотров: Bounds (неопределенные): 2012-04-16 20: 32: 48,363 ViewsAnimationTouchDrawing [59046: F803] Просмотров подрамник: (нуль):
Может С.О. так приятно объяснить мне, почему? (я думал, что окно уже инициализирована и имеет UIView на нем ..)
** Обновление
Я сейчас читаю книгу о Window View Иерархии. Автор говорит, что обычно существует один экземпляр класса UIWindow. Делегат от 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];
я получаю ссылку на окно, но окно (хотя я думал, что он должен был инициализирован) не имеет элементов в его подвид.
Да, я думаю, мне просто интересно. Это Apple каким-то образом распустила иерархию View в раскадровки?
Это правильно. Я немного уточнил свой ответ, чтобы уточнить. – jonkroll
Спасибо за сообщение. Я узнал об этом, и я обновил свой пост, чтобы уточнить мое замешательство – Schemiii