Задать вопрос
@dadduUrsa
Вернувшийся кодер недоучка

Как обновить view с переданными данными?

Имеется tabBar с двумя вкладками. На первой вкладке view со списком пользователей. При нажатии на пользователя открывается вторая вкладка с view на котором карточка пользователя. Я передаю в тот контроллер user'а и делаю profileView.viewDidLoad(). Далее уже отслеживаю поведение и вот что получается:

Readу to send ----- User ID: 7
viewDidLoad ----- User ID: 7
viewDidLoad ----- User ID: 7
viewDidLoad ----- User ID: 1
viewWillAppear ----- User ID: 1


Почему viewDidLoad вызывает трижды и почему меняется ID пользователя на значение по умолчанию? Если этот метод не подходит, то какой использовать для обновления view?

На первой вкладке табБара есть вью со списком пользователей. На второй вкладке вью с профилем пользователя + на ней коллекшнвью с фотками. При нажатии на имя пользователя срабатывает UITapGestureRecognizer и отрывает вторую вкладку с профилем. И вот в профиле уже должны быть данные с кликнутым пользователем. И соответственно должен обновиться коллекшнвью.
  • Вопрос задан
  • 706 просмотров
Подписаться 2 Простой Комментировать
Ответ пользователя Иван Воробей К ответам на вопрос (2)
ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode
Вам не нужно использовать viewDidLoad для обновления вообще. Это метод жизненного цикла.

Опишите какую вью хотите обновить - таблицу, просто вью, бар? По какому ивент - что триггер? Напишите это в вопросе, после дополню ответ.

UPD:
У вас по нажатию на первом таббаре открывается второй?) Так не делается. Видимо вы совсем начинающих... Изучите гидлайны по проектированию интерфейсов. Там буквально 10 страниц с картинками, отдельно есть про TabBar. У меня есть видео про иконки таб-бара.

Чтобы обновить коллекцию, нужно использовать reloadData, performBatch или apply в зависимости как вы установили dataSource. Вы начинающий, скорее всего через reloadData все будет работать.

Чтобы обновить просто вью - используйте тригеры. Делегаты, нотификации. По ивенту устанавливать текст/картинку.
Ответ написан