Как обновить все контроллеры представления в Swift - PullRequest
1 голос
/ 19 июня 2019

У меня есть приложение, в котором, когда пользователь входит в систему, он остается в системе до выхода из системы. После входа в систему некоторые аспекты стиля, такие как «имя», представляются пользователю для просмотра. Моя проблема в том, что, когда я вошел в систему как 'user1', а затем я вышел из системы и вошел как 'user2', представление все еще представляет 'user1' пользователю. Это связано с тем, что текст, содержащий 'user1', установлен в viewdidload () на моем TabBarController, и когда я выхожу из системы / в, viewDidLoad () больше не вызывается, поэтому текст остается прежним. Есть ли какая-либо функция или способ вызова viewDidLoad () на всех моих контроллерах ViewController после повторного входа в систему?

Я попробовал ViewDidAppear (…), но я действительно не хочу звонить в базу данных, чтобы получать имя каждый раз, когда пользователь нажимает VC

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Я думаю, что вы собираетесь войти.страница из вкладки навигационный контроллер.страница входа не должна быть в этой иерархии.1вы все еще можете сделать это с помощью viewwillappear 2. мы можем сделать это с учетом didload, и это рекомендуемый подход.создайте отдельный контроллер навигации для страницы входа и установите окно rootviewcontroller в соответствии с требуемым бизнес-потоком.так что, как только вы выйдете из системы, измените wiindow, rootviewcontroller так, чтобы весь контроллер панели вкладок был удален из памяти, а затем войдите, измените корневой контроллер представления на tabbarcontroller, теперь viewdidload будет называться

0 голосов
/ 19 июня 2019

Вы можете использовать NotificationCenter и отправлять пользовательские уведомления «логин».
Если какой-либо объект (например, VC) зависит от пользователя, то VC необходимо подписать это уведомление и обновить состояние.
Документация
https://developer.apple.com/documentation/foundation/notificationcenter
Простой пример
https://medium.com/@JoyceMatos/using-nsnotificationcenter-in-swift-eb70cf0b60fc

Другой способ сброса стека навигации, например,

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