获取数据后更新选项卡项徽章(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)的主要内容,如果未能解决你的问题,请参考以下文章
UITabbarItem : - 下载的图像不会显示在选项卡项中。