swift refre sh контроллер панели вкладок для отображения значка на элементе панели вкладок - PullRequest
0 голосов
/ 10 марта 2020

Привет, я хотел бы получить возможность вызывать функцию из любого контроллера

, который, в свою очередь, вызывает

viewDidAppear в моем tabBarController.

Я хочу это, как если бы кто-то Переходит на любой экран. Я хотел бы проверить базу данных, чтобы увидеть, есть ли какие-либо непрочитанные сообщения, и затем соответствующим образом обновить значок на элементе панели вкладок сообщений.

ниже приведена функция viewDidAppear

 override func viewDidAppear(_ animated: Bool) {

    print("viewDidAppear called in custom tab bar controller")

    guard let uid = Auth.auth().currentUser?.uid else { return }

    Firestore.firestore().collection("Users").document(uid).getDocument { (document, error) in
        if let document = document {

            guard let dictionary = document.data() else { return }
            guard let unReadMessage = dictionary["unReadMessage"] as? Int else {

                 self.tabBar.items![3].badgeValue = nil
                return }

            if unReadMessage == 1 {
                print("unReadMessage value was 1! xxxxx")

                self.tabBar.items![3].badgeValue = ""
            } else {
                self.tabBar.items![3].badgeValue = nil
            }


        }
    }

1 Ответ

0 голосов
/ 10 марта 2020

Если вы хотите установить элемент tabBar, вы можете сделать это следующим образом:

if let tabItems = self.tabBarController?.tabBar.items{
   let tabItem = tabItems[3]
   tabItem.badgeValue = "new"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...