如何使用swift 3设置标签栏徽章?

时间:2018-01-05 10:47:11

标签: swift xcode swift3

我是swift的新手,我不明白为什么这不能正常工作。

我一直在阅读类似的问题,但我还没有找到。

我有一个带有4个标签的标签栏控制器,我需要在位置为3的标签中显示带有“新”字样的徽章,但是我的代码我只得到一个项目,即使我有4个。

无法识别我的标签,所以我做错了。

应该很容易,但我不知道这个问题。

这是我的代码:

override func viewDidAppear(_ animated: Bool) {
        if let tabItems = self.tabBarController?.tabBar.items as NSArray!{
             let tabItem = tabItems[2] as! UITabBarItem
             tabItem.badgeValue = "New"
        }
}

它抛出了这个错误:

  

2018-01-05 11:34:22.121749 + 0100 schoolnote [9774:574213] *   由于未捕获的异常'NSRangeException'终止应用程序,原因:   '* - [__ NSSingleObjectArrayI objectAtIndex:]:超出界限的索引2   [0 .. 0]'

你可以帮帮我吗? 感谢。

1 个答案:

答案 0 :(得分:-1)

我认为没有必要将items转换为NSArray,因为它是[UITabBarItem],因此也无需将tabItems[2]转换为UITabBarItem },默认情况下为UITabBarItem

通过实施:

,您可以更简单
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    tabBarController?.tabBar.items?[2].badgeValue = "New"
}

请注意,此代码应在tabbar视图控制器的第一个(初始)视图控制器中实现(在下面的屏幕截图中选择左侧),或者您必须点击所需的tabbar项以显示具有上面的代码。这应该让第三个项目的徽章中包含“新”文字:

enter image description here