viewDidAppear не вызывается, но вызываемый viewWillAppear отображается только в iOS5

#iphone #uiviewcontroller #uinavigationcontroller #uitabbarcontroller #ios5

#iPhone #uiviewcontroller #uinavigationcontroller #uitabbarcontroller #ios5

Вопрос:

Я использую контроллер представления, который содержит tabbarcontroller (4 вкладки). каждая панель вкладок имеет контроллер навигации.

Мой вопрос: viewcontroller, который использовался в контроллере навигации, в котором viewDidAppear не вызывается во время вызовов viewWillAppear?

Он отлично работает в iOS4.x, но это условие появилось в iOS5.


 viewcontroller
    | 
    | 
tabbarcontroller (4 tabs)
    |
    |
uinavigationController (Y)
    |
    |
uiViewcontroller  (X)
  

В этом контроллере ‘X’ viewDidAppear вызывался не только в iOS 5, но и в iOS44.x??


Я пытаюсь

В «Y» я использую

 - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [viewController viewDidAppear:animated];
}
  

Он будет запускать ‘X’ viewDidAppear только один раз.

Мне это нужно каждый раз, когда появляется view.

Пожалуйста, помогите, спасибо

Комментарии:

1. в вашем viewWillAppear вызываете ли вы [super viewWillAppear], если нет, вы должны быть.

2. у меня есть проверка super, и пришел тот же результат..

Ответ №1:

Вы можете установить свойство делегата вашего UITabBarController и соответствующим образом реагировать на didSelectViewController: метод для вызова кода в ViewController (X).

Ответ №2:

я думаю, вы можете создать uitabbarcontroller, затем скрыть панель вкладок, а затем, когда вы переключите контроллер представления, просто удалите скрытое свойство .. тогда такая проблема не будет отображаться, я так думаю…..