我有一张包含数十个注释的地图。注释正确显示标题和副标题,我想在它们的右侧添加一个自定义的“开始”按钮。 Go按钮将打开Apple Maps并向用户提供他们在地图上查看的注释的说明。
我已经复制了我正在使用的代码。在它的当前形式中,不会出现任何按钮。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if !(annotation is MKUserLocation) {
let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: String(annotation.hash))
let rightButton = UIButton(type: .custom)
rightButton.setImage(UIImage(named: "Go"), for: .normal)
rightButton.tag = annotation.hash
pinView.canShowCallout = true
pinView.rightCalloutAccessoryView = rightButton
return pinView
}
else {
return nil
}
}
如果我删除以下行:
rightButton.setImage(UIImage(named: "Go"), for: .normal)
并将其上方的一个更改为:
let rightButton = UIButton(type: .detailDisclosure)
按钮确实正确显示,这告诉我尝试使用按钮的自定义图像时出现问题。
关于我缺少的任何想法?
答案 0 :(得分:0)
我能够通过将UIButton类型更改为以下内容来纠正它:
let rightButton = UIButton(type: .infoLight)
我的代码段现在看起来如此:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if !(annotation is MKUserLocation) {
let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: String(annotation.hash))
let rightButton = UIButton(type: .infoLight)
rightButton.setImage(UIImage(named: "Go"), for: .normal)
rightButton.tag = annotation.hash
pinView.canShowCallout = true
pinView.rightCalloutAccessoryView = rightButton
return pinView
}
else {
return nil
}
}