Ios 将对象解析为注释点
我试图在MKMapView中将一组解析对象显示为注释。这似乎是可行的,问题是对象图像被交换,这是一种随机的吗?为了保存图像,我已经开始创建MKPointAnnotation的子类。为什么要交换图像 自定义MKPointAnnonation类 类AnnonationClass:MKPointAnnotation{Ios 将对象解析为注释点,ios,objective-c,iphone,swift,mkmapview,Ios,Objective C,Iphone,Swift,Mkmapview,我试图在MKMapView中将一组解析对象显示为注释。这似乎是可行的,问题是对象图像被交换,这是一种随机的吗?为了保存图像,我已经开始创建MKPointAnnotation的子类。为什么要交换图像 自定义MKPointAnnonation类 类AnnonationClass:MKPointAnnotation{ var itemId: NSString? var itemImage: PFFile? var itemdescription: NSString? } 获取解析对象并使用setGe
var itemId: NSString?
var itemImage: PFFile?
var itemdescription: NSString?
}
获取解析对象并使用setGeoPoint方法添加它们
设置坐标、标题并在itemImage中保存图像文件
创建图像并对其进行设置
当pinView!=nil,即当重用视图时,图像很可能是从上次使用该视图时设置的。我认为这类似于在表视图单元格上设置复选标记,而不是使用数据源来正确设置单元格内容的属性 无论pinView是否被重用,请尝试设置图像视图
func mapView(mapView: MKMapView!, viewForAnnotation annotation: AnnonationClass!) -> MKAnnotationView! {
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
pinView!.pinColor = .Purple
}
else {
pinView!.annotation = annotation
}
var leftImage: PFImageView = PFImageView(frame: CGRectMake(0, 0, 44, 44))
leftImage.file = annotation.itemImage
leftImage.loadInBackground()
pinView!.leftCalloutAccessoryView = leftImage
return pinView
}你能举个例子吗?我刚把你的原始图像代码移到你的if语句之外。希望这有帮助。
func setGeoPoint(geoPoint:PFGeoPoint, titleString:NSString, imageFile:PFFile, theId:NSString, descString:NSString, dateString:NSString) {
var coordinate = CLLocationCoordinate2DMake(geoPoint.latitude, geoPoint.longitude) as CLLocationCoordinate2D
var pinView:AnnonationClass = AnnonationClass()
pinView.itemImage = imageFile
pinView.setCoordinate(coordinate)
pinView.title = titleString
pinView.subtitle = dateString
self.pointMapView!.addAnnotation(pinView)
}
func mapView(mapView: MKMapView!, viewForAnnotation annotation: AnnonationClass!) -> MKAnnotationView! {
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
pinView!.pinColor = .Purple
var leftImage: PFImageView = PFImageView(frame: CGRectMake(0, 0, 44, 44))
leftImage.file = annotation.itemImage
leftImage.loadInBackground()
pinView!.leftCalloutAccessoryView = leftImage
}
else {
pinView!.annotation = annotation
}
return pinView
}
func mapView(mapView: MKMapView!, viewForAnnotation annotation: AnnonationClass!) -> MKAnnotationView! {
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
pinView!.pinColor = .Purple
}
else {
pinView!.annotation = annotation
}
var leftImage: PFImageView = PFImageView(frame: CGRectMake(0, 0, 44, 44))
leftImage.file = annotation.itemImage
leftImage.loadInBackground()
pinView!.leftCalloutAccessoryView = leftImage
return pinView