iphone - 実装 - uitabbaritem icon




カスタマイズ可能なUITabBarにバッジを追加するにはどうすればよいですか? (4)

私は私のUITabBarControllerのUITabBarにそのようなバッジを追加しています:

UITabBarItem *tbi = (UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:1];
tbi.badgeValue = @"2";

しかし、私のUITabBarControllerはカスタマイズ可能であるため、インデックスが変更される可能性があります。 バッジが正しいUITabBarItemに適用されるようにするにはどうすればよいですか?


スウィフトバージョン:

self.tabBarController?.selectedViewController?.tabBarItem.badgeValue="12";

タブ・バー・コントローラを所有するクラスでNSMutableDictionaryプロパティを使用し、タブ名を位置に関連付け、名前で取得するメソッドを使用します。

-(UITabBarItem*)getTabByName:(NSString*)tabName {
    return [stTabBarController.tabBar.items objectAtIndex:[[tabDict valueForKey:tabName] intValue]];
}

そのときのタブインデックスを知っているので、各タブの設定コードで辞書を初期化します。

[tabDict setValue:[stTabBarController.tabBar.items objectAtIndex:1] forKey:@"myTabName"];

変更するタブバー項目への参照を保持します。

コードリクエストへの応答としてEDIT
タブバーアイテムのバッジを更新するアプリ内には1つの場所があると思います。 そのクラスのメンバ(必要に応じて+プロパティ)としてタブバー項目(または別のタブバー項目)の配列を追加し、現在のタブバー項目リスト(UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:1]; )。

たとえば、タブバー項目への参照を直接(配列なしで)保持することにした場合、コードは次のようになります。

// Put the next code right after initiating the tab bar and/or after adding new tab bar items to it...

self.newsTabBarItem = (UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:1];
self.friendsTabBarItem = (UITabBarItem *)[stTabBarController.tabBar.items objectAtIndex:2];

// etc.

UITabBarItem *tbi = (UITabBarItem *)self.tabController.selectedViewController.tabBarItem;
tbi.badgeValue = @"New";

また動作します。





uitabbar