@IBAction func addToCart(sender: AnyObject) { let itemObjectTitle = itemObject.valueForKey("itemDescription") as! String let alertController = UIAlertController(title: "Add \(itemObjectTitle) to cart?", message: "", preferredStyle: .Alert) let yesAction = UIAlertAction(title: "Yes", style: UIAlertActionStyle.Default) { (action) in var tabArray = self.tabBarController?.tabBar.items as NSArray! var tabItem = tabArray.objectAtIndex(1) as! UITabBarItem let badgeValue = "1" if let x = badgeValue.toInt() { tabItem.badgeValue = "\(x)" } }
我不知道为什么我不能只做+ =“(x)”
错误:二进制运算符’+ =’无法应用于类型为’String?’的操作数 和“字符串”
我希望它在用户每次选择“是”时增加1。现在,显然它只是停留在1。
您可以尝试访问badgeValue并将其转换为Integer,如下所示:
迅捷2
if let badgeValue = tabBarController?.tabBar.items?[1].badgeValue, nextValue = Int(badgeValue)?.successor() { tabBarController?.tabBar.items?[1].badgeValue = String(nextValue) } else { tabBarController?.tabBar.items?[1].badgeValue = "1" }
Swift 3或更高版本
if let badgeValue = tabBarController?.tabBar.items?[1].badgeValue, let value = Int(badgeValue) { tabBarController?.tabBar.items?[1].badgeValue = String(value + 1) } else { tabBarController?.tabBar.items?[1].badgeValue = "1" }
要删除徽章,只需将nil分配给重写viewDidAppear方法的badgeValue:
override func viewDidAppear(animated: Bool) { tabBarController?.tabBar.items?[1].badgeValue = nil }