viewDidUnload, viewWillDisappear не вызывается в tabBarContoller - PullRequest
5 голосов
/ 04 июля 2011

Я делаю приложение, основанное на представлении, в котором первый контроллер является viewcontroller, есть экран входа в систему, после входа в систему следующим представлением является контроллер панели вкладок, и у меня есть 2 элемента панели вкладок на этой панели вкладок.До этого все работает нормально.Теперь, когда я переключаюсь между этими двумя представлениями, viewWillDisappear, viewDidUnload не вызывается из предыдущей нажатой вкладки.

PS Даже если viewwillAppear не был вызван, я вызвал его с уведомлением по умолчанию.Не знаю, в чем проблемы.Надеюсь, у меня возник вопрос с вопросом.

Ответы [ 3 ]

8 голосов
/ 04 июля 2011

Прежде всего, при переключении представления в UITabBarController, функция viewDidUnload не вызывается, потому что представление фактически не выгружено.Итак, это нормально.

Что из коробки должно работать viewWillAppear / viewDidDisappear.Но тут есть подвох.В зависимости от того, как вы показываете свои взгляды, может случиться так, что viewWillAppear / viewDidDisappear не будет вызван фреймворком для вас.Например, это происходит, если вы добавляете свое представление как подпредставление, но есть и другие случаи.Я не знаю, как вы отображаете панель вкладок, поэтому не могу сказать что-то более конкретное об этом.

Простое решение, которое я предлагаю исправить, это переопределение селектора tabBarController:didSelectViewController: в вашем делегате контроллера панели вкладок.Оттуда вы можете реализовать свою собственную логику или позвонить viewDidDisappear.

1 голос
/ 04 июля 2011

Вы должны поместить свой контроллер TabBar в MainWindow.xib.

Сначала, когда вы показываете экран входа в систему, вы добавите свой RootViewController следующим образом:

[self.window addSubview:self.rootview.view];

А после завершения входа вы можете удалитьсвой RootViewController из главного окна и добавьте TabBarController в главное окно следующим образом:

    [self.rootview.view removeFromSuperview];
    [self.window addSubview:self.tabBarController.view];
0 голосов
/ 04 июля 2011

У вас есть UINavigationController?Вы не ссылаетесь на один.Если вы не используете UINavigationController, то, вероятно, ваш UITabBarController не настроен должным образом как topViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...