Обновите представление вкладки UITabBar или вызовите метод из представления вкладки UITabBar при повторном выборе вкладки
За исключением первого раза, когда вкладка переключается, когда ViewDidLoad изначально запускается, все последующие действия по переключению (повторному выбору) на эту вкладку, по-видимому, не вызывают ViewDidLoad или любой другой метод. Представление просто кэшировалось и перезапускалось мгновенно, точно так же, как оно оставалось, когда пользователь переключался с этой вкладки. Однако когда пользователь снова выбирает конкретную вкладку, мне нужно обновить ее вид. Таким образом, если возможно, мне нужно каким-то образом вызвать метод из представления без дополнительного взаимодействия с пользователем (после повторного выбора вкладки).
Я знаю, что в UITabBarDelegate есть метод, который должен вызываться до или после переключения табуляции, но я не знаю, будет ли это способом инициировать вызов метода из представления вкладки при повторной активации указанного вкладка. Я не знаю, как получить доступ к уже активному экземпляру представления вкладки из делегата. Любое направление на это было бы очень полезно!
2 ответа
При использовании UITabBar ваши представления сохраняются, если не получено предупреждение памяти, и они должны быть освобождены. Поскольку они поддерживаются постоянно, viewDidLoad будет вызываться только один раз (если только ваше представление не выгружено из-за предупреждения памяти).
viewWillAppear и viewDidAppear будут вызываться каждый раз, когда представление будет отображаться на экране, поэтому вам нужно обновить представление или данные.
viewWillAppear лучше использовать в тех случаях, когда вы хотите обновить что-либо в представлении до того, как оно увидит пользователь. Например, установка UILabels или UITextFields для очистки данных. Это предотвратит быстрое обновление старых данных пользователем перед их очисткой. Выполнение в этом методе всего, что потребует значительных системных ресурсов или займет много времени (например, веб-сервисы), может замедлить работу вашего приложения и помешает вам одновременно показывать UIActivityIndicator, как это происходит до того, как представление действительно появится.
viewDidAppear полезен для всего, что может быть обновлено после того, как представление уже показано, например для веб-сервисов из предыдущего примера.
Я делаю то же самое в одном из моих приложений и использую viewWillAppear
а также viewDidAppear
чтобы сделать это.
Кажется, они вызываются каждый раз, когда вкладка переизбирается. (Я создал метод updateView
который вызывается внутри viewDidAppear
метод)