私はtableViewController
の3つを持っており、それらはtabBarController
によって管理されています。また、他のアプリのような期限切れのアイテムについては、各tabBarItem
にアラートを送信する必要があります。最初にtableViewController
私はtabBarItem
のbadgeValue
の中に期限切れのアイテム数を表示しようとしました。これらの値は、fetchedResultsController
のfetchedObjects.count
から得られます。TabBarItemのバッジ値を正しく更新するにはどうすればいいですか?
func tabBarBadgeUpdater() {
for viewController in (self.tabBarController?.viewControllers)! {
let overdue = self.fetchedResultsController.fetchedObjects?.filter({ (record) -> Bool in
return (record.date?.compare(Date()) != .orderedDescending)
})
print(overdue!.count)
if viewController.tabBarItem.tag == 1 {
if overdue!.count != 0 {
DispatchQueue.main.async(execute: {
viewController.tabBarItem.badgeValue = "\(overdue!.count)"
viewController.tabBarItem.badgeColor = UIColor.init(red: 0.0, green: 0.5, blue: 0.0, alpha: 1.0)
self.tableView.reloadData()
})
} else {
DispatchQueue.main.async(execute: {
viewController.tabBarItem.badgeValue = ""
viewController.tabBarItem.badgeColor = .clear
self.tableView.reloadData()
})
}
}
}
}
しかし、私の問題行は、それらを削除しています。私はモデルから最後のオブジェクトを削除しようとしましたが、まだ値が1
どのように正しくTabBarItem
のbadgeValue
を表示する方法を示していますのはいつですか?
""に設定したコードに到達していませんか?別のオプションは、モデルが変更されたときに 'controllerDidChangeContent'を実装し、' fetchedResultsController'からカウントを取得し、その番号にバッジを設定することです。 – Koen
モデルに新しい値を追加して消えたとき。しかし、何度も同じ結果が得られます – Mannopson
'viewController.tabBarItem.badgeValue =" "'でブレークポイントを試しましたか? '' ''の代わりにbadgeValueを 'nil'に設定することは私のプロジェクトでうまくいきます。 – Koen