リロード/更新のViewControllerのタブバー項目?
-
26-09-2019 - |
質問
私はViewControllerをで私のタブバーの画像を変更しようとしていますが、新しい画像を表示するために、私は、各タブバーの項目をクリックする必要があります。
for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){
myItem.enabled = YES;
myItem.badgeValue = @"1";
UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]];
*myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item
}
誰もが知っているどのように私は直接これらの画像を表示することができますすることができますか? おかげ
解決
あなたは新しいものと古いタブバーのアイテムを交換する必要があります。あなたは、動的にそれ以外の場合は、画像を更新することはできません。
これを行う最も簡単な方法は、特定のタブで表さビュー - コントローラのtabBarItemプロパティを設定することです。あなたがそのビューコントローラ内からこれをやってみたかった場合は、ちょうど書きます:
self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];
それとも、あなたは、どこか別の場所からアプリのデリゲートをこれを言うことができます:
UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3];
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];
他のヒント
私は、これは古い質問です知っています。私は別のアクティブなタブからバッジ値を更新する必要があるとき、私は同じ問題に遭遇しました。別のUITabBarItem
を作成すると、あなたの現在の問題を解決しますが、このコードは何度も呼び出される可能性のあるメモリリークが発生します。さらに、他のビューコントローラはタブにアクセスするとき、彼らは新たに作成されたUITabBarItem
への参照を持っていません。私のトリックがある。
vc.tabBarItem = vc.tabBarItem;
これは私のために動作します。
所属していません StackOverflow