2012-06-26 3 views
0

ViewWillAppear никогда не вызывается автоматически. Мне нужно называть их вручную. ViewWillDisappear часто называют.Как узнать окно моего представления?

Я не знаю, где отлаживать это.

Я полагаю, проблема в том, что я создал приложение на 4.1, где люди должны называть viewWillAppear явно.

Я полагаю, потому что viewWillAppear будет называться в зависимости от его отношения с окном. Я могу проверить, есть ли у моего viewController выход к окну.

Как это сделать?

Я подозревал, что проблема где-то в моем делегатом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [Crashlytics startWithAPIKey:@"a08863b514ef09558ba82fec070cc7468fdbeeae"]; 
    if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) 
    { 
     NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!"); 
    } 

    [self.window addSubview:self.navController.view]; //This seem to be the problem. I should have specified the viewController and not the view 

    [self.navController pushViewController:self.MainBadgerApplication animated:YES]; 
    //[cachedProperties singleton].lastAnchor =[cachedProperties currentLocation]; 
    [cachedProperties singleton].currentAnchor=[cachedProperties currentLocation]; 
    self.MainBadgerApplication.selectedIndex=0; 
    [BNUtilitiesQuick tabBarController:self.MainBadgerApplication didSelectViewController:self.MainBadgerApplication.selectedViewController]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

я подозревал, что [self.window addSubview: self.navController.view]; это проблема.

Также я слышал, прежде чем ios5 вам нужно вызвать viewController явно. Поэтому я должен создать другую программу для iOS5 и iOS4 (не так, как есть опасность в призыве ViewController дважды для моей программы)

+0

Для окна вы можете проверить - self.view.window. Но вам не нужно явно вызывать viewWillAppear, он автоматически отвечает на жизненный цикл контроллера вида. – rishi

+0

Он явно не вызывает viewWillAppear. Это проблема. –

+0

одна вещь, для которой вам нужно быть уверенным, что вам никогда не нужно вызывать какой-либо жизненный цикл контроллера. Я подозреваю, что на иерархии контроллера навигации вы можете попробовать зарегистрировать NSLog (@ "% @", self.navigationController.viewControllers); и проверьте, что представляет собой иерархия представлений. – rishi

ответ

1

Я подозревал, что [self.window addSubview:self.navController.view]; является проблемой.

Возможно. Вы должны сделать это вместо этого:

self.window.rootViewController = self.navController; 

Просто добавив, что представление не поместило ваш контроллер представления в иерархию должным образом. Для получения дополнительной информации см. Видеоконтент с поддержкой контроллера WWDC 2011.

+0

Изменено. Посмотрим. –

Смежные вопросы