希望这是一个简单的问题。我试图获得UIBarButtonItem的UIView。查看以下StackOverflow question我想出了以下代码:
let notificationButton = UIBarButtonItem(image: UIImage(named: "icon_notification.png"), style: .plain, target: self, action: nil)
let notificationView = notificationButton.value(forKey: "view") as? UIView
但是,notificationView是零。那么,想一想我没有从链接的StackOverflow问题中解释什么?
答案 0 :(得分:1)
所以,DS Dharma给了我一个最终起作用的想法。 "视图" value仅在分配给工具栏导航项后才可用,如下所示:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_notification.png"), style: .plain, target: self, action: nil)
self.navigationItem.rightBarButtonItem?.addBadge(number: 0, withOffset: CGPoint(x: 7.0, y: 0.0) , andColor: UIColor.black, andFilled: true)
其中addBadge()函数需要UIView。顺便说一句,如果有人想知道,addBadge函数来自这篇文章:http://www.stefanovettor.com/2016/04/30/adding-badge-uibarbuttonitem
强烈建议您使用此功能。
答案 1 :(得分:0)
从iOS 11开始,此代码将不起作用,因为以下代码行将不会强制转换UIView。此外,它还算作私有API,似乎不会通过AppStore审查。
guard let view = self.value(forKey: "view") as? UIView else { return }