Я пытаюсь напечатать подтекст в нескольких аннотациях, который показывает, когда нажимается кнопка. Поэтому я создал следующий цикл for для создания аннотаций:
for location in locations {
let annotation = customAnnotation()
annotation.title = location.title
annotation.subtext= location.subtext
annotation.coordinate = CLLocationCoordinate2D (latitude: location.latitude, longitude: location.longitude)
let timeAInt= Int(location.timeA)
let timeBInt= Int(location.timeB)
if timeAInt... timeBInt ~= Hour { annotation.icon = "testPin1" }
else { annotation.icon = "testPin2" }
map.addAnnotation(annotation)
}
self.map.delegate = self
}
я использую этот класс для аннотации:
class customAnnotation: MKPointAnnotation {
var isCollapsed = true
var setNeedsToggle = false
var subtext: String = ""
var icon: String = "" }
и я использую эту функцию для описания свойства пинов:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard let annot = annotation as? customAnnotation else { return nil }
if annotation is MKUserLocation {
return nil
}
let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "customAnnotation")
annotationView.image = UIImage(named: annot.icon)
annotationView.canShowCallout = true
let rightButton = UIButton(type: .infoLight)
rightButton.setImage(UIImage(named: annot.isCollapsed ? "ic_showmore" : "ic_showless"), for: .normal)
annotationView.rightCalloutAccessoryView = rightButton
if (annot.isCollapsed) {
annotationView.detailCalloutAccessoryView = nil
}
else {
print(annot.subtext)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.text = "any text"
label.font = UIFont.italicSystemFont(ofSize: 14.0)
label.numberOfLines = 0
annotationView.detailCalloutAccessoryView = label
label.widthAnchor.constraint(lessThanOrEqualToConstant: label.frame.width).isActive = true
label.heightAnchor.constraint(lessThanOrEqualToConstant: 90.0).isActive = true
}
return annotationView
}
цикл if / else описывает заголовок и подтекст, который отображается при нажатии кнопки справа.
Моя проблема сейчас: когда я пишу «print (annot.subtext)» в часть if, он фактически печатает подтекст, который я назначаю этой специальной аннотации. Теперь моя цель - записать его как фактический подтекст, который появляется, когда нажимается кнопка с комментариями справа. Поэтому я написал "label.text = annot.subtext" внутри else-части, но ничего не произошло.
Я попытался отладить и написал "label.text =" любой текст "", и он фактически показал "любой текст" как подтекст моей аннотации при нажатии кнопки.
После этого я поместил «print (annot.subtext)» в else-часть перед «label.text =« any text »», но он этого не печатал. Вместо этого он показал ошибку: «Указано недопустимое имя ресурса CUICatalog:« », в то же время записывая« любой текст »в выноску аннотации
Мне интересно, потому что при поиске этого кода ошибки в Интернете всегда возникала какая-то проблема с файлами изображений или видео, но на этот раз она просто обнаружилась, когда я вставил тот же код, что и в часть if, в остальное-часть.
Может быть, у некоторых из вас есть идея!
Большое спасибо,
Гусь