我正尝试在我的UIBarButton的右上角创建一个徽章号码。对于iOS 9,10它工作正常,但与iOS 11我不能访问该按钮的观点,我通常这样做:iOS 11 - 无法访问UIBarButton的UIView
extension UIBarButtonItem {
func createBadge() {
guard let view = self.value(forKey: "view") as? UIView else {
return
}
}
}
据我所知,使用键值是不是一个好主意,这样的情况下,因为关键可以改变。但是在这里有没有其他的选择,使用公共API,以便该解决方案也适用于iOS 11? 谢谢。
如果你知道试图访问私有子视图结构是一个坏主意,那么你为什么试图找到一个解决方案的坏主意?为什么不正确地做到这一点,所以你不必每次iOS更改私有实现时修复代码? – rmaddy
嗯,我同意,我的问题并不是要求为iOS 11提供正确的键值,而是为了适合所有可用iOS版本的替代实现。 – PoolHallJunkie
你的问题要求iOS 11的替代品,所以它听起来像你想要更新的私人密钥在iOS 11中工作。你应该更新你的问题,以清楚地表明你想要一个适当的解决方案,使用从iOS 9通过公共API iOS 11(及更高版本)。 – rmaddy