viewDidLoad - это то, что вы должны сделать один раз. viewWillAppear вызывается каждый раз, когда появляется представление. Вы должны делать то, что вам нужно сделать только один раз в viewDidLoad - например, устанавливать тексты UILabel. Однако вы можете захотеть изменять определенную часть представления каждый раз, когда пользователь просматривает ее, например, приложение iPod прокручивает текст обратно вверх, каждый раз, когда вы переходите к представлению «Сейчас исполняется».
Тем не менее, когда вы загружаете вещи с сервера, вы также должны думать о задержке. Если вы упакуете все свои сетевые коммуникации в viewDidLoad или viewWillAppear, они будут выполнены до того, как пользователь увидит представление, что может привести к кратковременному зависанию вашего приложения. Это может быть хорошей идеей, чтобы сначала показать пользователю незаселенный вид с каким-либо индикатором активности. Когда вы закончите работу с сетью, что может занять секунду или две (или может даже потерпеть неудачу - кто знает?), Вы можете заполнить представление своими данными. Хорошие примеры того, как это можно сделать, можно увидеть в различных клиентах Twitter. Например, при просмотре страницы сведений об авторе в Twitterrific в представлении отображается только «Загрузка ...» до тех пор, пока не завершатся сетевые запросы.
Изначально использовался только ViewDidLoad с tableView. При тестировании с потерей Wi-Fi, установив устройство в режим полета, понял, что таблица не обновилась с возвратом Wi-Fi. Фактически, по-видимому, нет способа обновить tableView на устройстве, даже нажав кнопку home с фоновым режимом, установленным в YES в -Info.plist.
Мое решение:
источник
Важно отметить, что использование viewDidLoad для позиционирования немного рискованно, и его следует избегать, поскольку границы не установлены. это может привести к неожиданным результатам (у меня было множество проблем ...)
Этот пост довольно хорошо описывает различные методы и то, что происходит в каждом из них.
В настоящее время для одноразового инициализации и позиционирования я подумываю использовать viewDidAppear с флагом, если у кого-то есть другие рекомендации, пожалуйста, дайте мне знать.
источник
Зависит, нужно ли вам загружать данные каждый раз, когда вы открываете представление? или только один раз ?
viewDidLoad:
Какую бы обработку вы ни выполняли, это нужно сделать один раз.viewWilLAppear:
Независимо от обработки, которая должна меняться при каждой загрузке страницы.Метки, значки, названия кнопок или большинство dataInputedByDeveloper обычно не меняются. Имена, фотографии, ссылки, статус кнопок, списки (входные массивы для ваших таблиц или коллекций) или большинство dataInputedByUser обычно меняются.
источник
viewWillAppear
вы можете запросить и проверить последние твиты.viewDidAppear
слишком поздно для этого