我有一个三个tableViewController
,它们由tabBarController
管理。每个tabBarItem
都必须像其他应用程序一样被提醒有关过期项目。在我的第一个tableViewController
中,我试图在tabBarItem
的badgeValue
中显示过期项目计数。这些数值来自于其良好的工作状态。
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。
如何正确显示
fetchedResultsController
'sfetchedObjects.count
? 最佳答案
我建议您实现controllerDidChangeContent
这是您的fetchedResultsController
的委托方法。每次您的模型更改时,都会调用它,您可以查询计数并更新您的徽章号码。
关于swift - 如何正确更新TabBarItem徽章值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41941891/