[英]How to update badge count from all view controllers?
我在標簽欄中顯示了一堆徽章。 在我的應用中,徽章計數可以隨時更改,因為它是實時聊天應用,用戶可以通過Android,Web和iOS應用進行聊天。
現在,我正在viewWillAppear
獲取應用程序中每個視圖控制器中的徽章計數。 它可以工作,但是我不確定這是否是最好的方法?
有沒有更好的方法來解決這個問題? 任何指針將不勝感激。 TX
您可以創建UITabBarController
子類(然后您必須將TabBarController的類設置為該子類)。 現在,在create方法和此方法內部,聲明當當前selectedItem
是這個或tabBar
的items
數組中的這個 UITabBarItem
時應該怎么tabBar
func changeBadge() {
guard let item = tabBar.selectedItem else { return }
guard let items = tabBar.items else { return }
switch item {
case items[0]:
... // get value
item.badgeValue = "\(value)"
case items[1]
... // get value
item.badgeValue = "\(value)"
...
default:
}
}
現在,當TabBarController
確實加載並且用戶選擇新的UITabBarItem
時,只需調用此方法即可。
override func viewDidLoad() {
changeBadge()
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
changeBadge()
}
class TabBarController: UITabBarController {
override func viewDidLoad() {
changeBadge()
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
changeBadge()
}
func changeBadge() {
guard let item = tabBar.selectedItem else { return }
guard let items = tabBar.items else { return }
switch item {
case items[0]:
... // get value
item.badgeValue = "\(value)"
case items[1]
... // get value
item.badgeValue = "\(value)"
...
default:
}
}
}
當你有tabBarController的共享實例的訪問,你可以輕松地增加任何的UIViewController它的TabBar項目的徽章價值。 您可以按照以下步驟進行:
if let tabBarItems = tabBarController?.tabBar.items {
let tabItem = tabBarItems[0]
tabItem.badgeValue = "1"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.