[英]viewWillTransition called from different Tab with UITabBarController
[英]Unable to get tab items in a common function when called from UITabBarController
我在UIViewController
擴展中有一個常用功能。 我從標簽欄控制器和視圖控制器調用此函數。 從視圖控制器調用時有效,但從標簽欄控制器調用時無效。 控件轉到else錯誤:tabItems 。 我無法弄清楚出了什么問題,還有其他方法可以使它在從Tab控制器調用時起作用嗎?
class MainTabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.updateBadges()
}
extension UIViewController {
func updateBadges() {
DispatchQueue.main.async {
self.setBadge(tab: 1, count: 3)
}
}
func setBadge(tab: Int, count: Int) {
if let tabItems = self.tabBarController?.tabBar.items {
print("Inside tabItems")
let tabItem = tabItems[tab]
if count != 0 {
tabItem.badgeValue = String(count)
} else {
tabItem.badgeValue = nil
}
} else {
print("Error: tabItems")
}
}
}
問題是self.tabBarController
對於UITabBarController
本身nil
。 一種可能的解決方案如下所示:
func setBadge(tab: Int, count: Int) {
let tabBarController = self as? UITabBarController ?? self.tabBarController
if let tabItems = tabBarController?.tabBar.items {
print("Inside tabItems")
let tabItem = tabItems[tab]
if count != 0 {
tabItem.badgeValue = String(count)
} else {
tabItem.badgeValue = nil
}
} else {
print("Error: tabItems")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.