ios - 在所选类型的标签栏项目上设置角标(Badge)(不知道其索引)

标签 ios swift iphone

我的应用程序中有一个 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 的属性直接访问。

如果您有自定义的 ViewControllerUITabBar - 您只需要构建类似的逻辑,让您可以跟踪显示特定 View Controller 的索引。

关于ios - 在所选类型的标签栏项目上设置角标(Badge)(不知道其索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56775555/

相关文章:

ios - TabBarController 之前的启动画面

android - 在Android上相当于AVQueuePlayer

ios - Firebase queryOrderedByChild 不在 Swift 中按名称排序

ios - 如何在相同的 "didSelectRowAtIndexPath"方法中再次调用 "didSelectRowAtIndexPath"方法

ios - 带有 xam.Plugin.Media 的 iOS 10 上的相机问题

ios - 为什么我的 superview-with-subview 在模态呈现时会缩小(使用自动布局)?

ios - 带有旋转图像的动画

ios - 如何重新排序显示的获取结果?

cocoa - 将库上传到 cocoa pod

ios - 我如何逐步更新我的进度条?