Обновите представление вкладки UITabBar или вызовите метод из представления вкладки UITabBar при повторном выборе вкладки - PullRequest
6 голосов
/ 12 августа 2011

За исключением случаев, когда вкладка переключается в первый раз, когда ViewDidLoad изначально запускается, все последующие действия по переключению (повторному выбору) на эту вкладку, по-видимому, не вызывают ViewDidLoad или любой другой метод.Казалось, что представление просто кэшируется и повторно отображается сразу же, так же, как оно было оставлено, когда пользователь переключался с этой вкладки.Однако когда пользователь снова выбирает конкретную вкладку, мне нужно обновить ее вид.Таким образом, если возможно, мне нужно каким-то образом вызвать метод из представления без дополнительного взаимодействия с пользователем (после повторного выбора вкладки).

Я знаю, что в UITabBarDelegate есть метод, который должен вызываться до или после переключения табуляции, но я бы не знал, будет ли это способом инициировать вызов метода изнутривид вкладки при повторной активации указанной вкладки.Я не знаю, как получить доступ к уже активному экземпляру представления вкладки из делегата.Любое направление на это было бы очень полезно!

Ответы [ 2 ]

13 голосов
/ 12 августа 2011

При использовании UITabBar ваши представления сохраняются, если не получено предупреждение памяти, и они должны быть освобождены. Поскольку они сохраняются постоянно, viewDidLoad будет вызываться только один раз (если только ваше представление не выгружено из-за предупреждения памяти).

viewWillAppear и viewDidAppear будут вызываться каждый раз, когда представление будет отображаться на экране, поэтому вам нужно обновить представление или данные.

viewWillAppear лучше использовать в тех случаях, когда вы хотите обновить что-либо в представлении до того, как оно увидит пользователь. Например, установка UILabels или UITextFields для очистки данных. Это предотвратит быстрое обновление старых данных пользователем перед их очисткой. Выполнение в этом методе всего, что потребует значительных системных ресурсов или займет много времени (например, веб-сервисы), может замедлить работу вашего приложения и не позволит вам одновременно показывать UIActivityIndicator, как это происходит до того, как представление действительно появится.

viewDidAppear полезен для всего, что может быть обновлено после того, как представление уже показано, например для веб-сервисов из предыдущего примера.

3 голосов
/ 12 августа 2011

Я делаю то же самое в одном из своих приложений и использую viewWillAppear и viewDidAppear для достижения этой цели.

Кажется, они вызываются каждый раз, когда вкладка переизбирается. (Я создал метод updateView, который вызывается внутри метода viewDidAppear)

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