我是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]'
答案 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项以显示具有上面的代码。这应该让第三个项目的徽章中包含“新”文字: