Вы можете создать подкласс UITabBarController
(тогда вы должны установить класс вашего TabBarController для этого подкласса).Теперь внутри метода create и внутри этого метода объявите, что должно произойти, когда текущий selectedItem
равен this или this UITabBarItem
из tabBar
's items
array
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:
}
}
}