我的应用程序中有一个 tabBar。我想在收到通知时显示带有许多未读消息的角标(Badge)。到目前为止,我的代码如下。 问题是消息选项卡并不总是列表中的第一项(顺序因不同的应用程序设置而异,但它始终存在)。如果我不知道它有哪个索引,如何在它上面设置角标(Badge)?
if let item = self.tabBar.items?.first {
var count = messages.count
if item.badgeValue != nil {
count += Int(item.badgeValue!) ?? 0
}
item.badgeValue = "\(count)"
}
最佳答案
您将获得第一行中的第一项 - 因此它按预期工作。
您需要以这种方式组织您的 UITabBar
,以便您始终可以识别在哪个索引上显示消息。
一个想法是在配置 UITabBar
时保留对它的引用 - 这样您就可以始终找到在哪个索引下显示消息。
最好的方法是在 UITabBar
后面保留相应的 View 数组,然后找到您需要的 View 。
如果您正在使用 UITabBarController
,您将免费获得它 - 所有 UIViewController
都可以通过名为 viewControllers
的属性直接访问。
如果您有自定义的 ViewController
和 UITabBar
- 您只需要构建类似的逻辑,让您可以跟踪显示特定 View Controller 的索引。
关于ios - 在所选类型的标签栏项目上设置角标(Badge)(不知道其索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56775555/