获取数据后更新选项卡项徽章(Swift)

Posted

技术标签:

【中文标题】获取数据后更新选项卡项徽章(Swift)【英文标题】:Update Tab Item Badge after getting data (Swift) 【发布时间】:2019-12-14 23:44:06 【问题描述】:

我想在收到一些数据时更新自定义标签栏项目上的徽章。我能够更新初始 viewDidLoad() 上的徽章,但是当我稍后尝试使用数据再次调用 viewDidLoad 时,我的选项卡项为零。这是我的设置方式...

class CustomTabBar: UITabBarController 

var count = 0

override func viewDidLoad() 
    super.viewDidLoad()


   print("this prints correctly every time I call reload with the updated count: " + count)


    if let tabItems = self.tabBar.items 

        let tabItem = tabItems[0]
        tabItem.badgeValue = String(count)

    else
        print("tab items nil")
    



func  reload(count: Int)
    self.count = count
    viewDidLoad()


在获得所需数据后,我正在从另一个视图控制器调用 reload()。

   func updateBadge()

    let tabBar = CustomTabBar()

        let username = UserUtil.username
        let db = Firestore.firestore()


        let upcomingContestsRef = db
            .collection("NBAContests")
            .whereField("EnteredUsers", arrayContains: username)
            .whereField("Stage", isEqualTo: 2)

        upcomingContestsRef.getDocuments()
            
                (querySnapshot, err) in

                if let err = err
                
                    print("Error getting documents: \(err)");
                
                else
                
                    print("count is " + String(querySnapshot!.count))

                    tabBar.reload(count: querySnapshot!.count)

                

        


我已经检查了 viewDidLoad 每次都在自定义标签栏控制器中被调用,但是在初始加载之后,我无法再更改标签项。

有人知道怎么回事吗?

我已经查看了这些类似的问题

Reload / Refresh tab bar items in a ViewController ?

Setting badge value in UITabBarItem in UIViewController

【问题讨论】:

【参考方案1】:

这会创建

let tabBar = CustomTabBar()

你需要一个新实例

guard let tabBar = self.tabBarController as? CustomTabBar else  print("returned") ; return 

【讨论】:

修复了它,仅此而已。谢谢!

以上是关于获取数据后更新选项卡项徽章(Swift)的主要内容,如果未能解决你的问题,请参考以下文章

如何为 chrome 上的每个选项卡获取不同的徽章值?

根据发送的通知 swift 获取通知徽章编号

Swift - 保存核心数据后更新 Tableview

UITabbarItem : - 下载的图像不会显示在选项卡项中。

有没有办法从 iOS 中的 QuickBlox 获取更新的徽章计数器?

快速更新核心数据对象 3