web-dev-qa-db-ja.com

選択されていないtabBarItemのバッジをSwift

4つのタブバーアイテムを備えたナビゲーションコントローラーがあります。それぞれの内部にナビゲーションコントローラーがあります。プッシュ通知を受け取ったときに、どのビューまたはタブに関係なく、4番目のタブバーバッジ番号を変更できるようにしたい。自動レイアウトを使用する必要があるため、アプリデリゲート内でプログラムによるソリューションを使用できません。 。単一のビューテンプレートからプロジェクトを開始しました。

目的のタブに移動し、バッジの値を変更して戻ってきましたが、もちろん機能しませんでした。 tabBarControllerには、現在のタブバーアイテムへの参照のみがあるようです。

    var current = self.tabBarController?.selectedIndex
    self.tabBarController?.selectedIndex = 3
    self.navigationController?.tabBarItem.badgeValue = "34"
    self.tabBarController?.selectedIndex = current!
11
pinolo

バッジの値を更新するためにそのインデックスを選択する必要はありません。タブバーアイテムの配列を取ります。更新するインデックスでアイテムを選択し、バッジ値を設定します。以下を参照してください。4番目のタブバーアイテムについて実行しました。

Swift 5.

if let items = self.tabBarController?.tabBar.items as NSArray? {
    let tabItem = items.object(at: 3) as! UITabBarItem
    tabItem.badgeValue = "34"
}
36
Kampai

短い:

let tabItem = self.tabBarController?.tabBar.items![3]
let tabItem.badgeValue = "34"
7
Eric Johnson
extension UITabBarController {
    func increaseBadge(indexOfTab: Int, num: String) {
        let tabItem = tabBar.items![indexOfTab]
        tabItem.badgeValue = num
    } 
}

そして、あなたはそれをこのように呼ぶことができます:

self.tabBarController?.increaseBadge(indexOfTab: 3, num: "34")
2
Bassant Ashraf