Ios 将对象解析为注释点

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

我试图在MKMapView中将一组解析对象显示为注释。这似乎是可行的,问题是对象图像被交换,这是一种随机的吗?为了保存图像,我已经开始创建MKPointAnnotation的子类。为什么要交换图像

自定义MKPointAnnonation类 类AnnonationClass:MKPointAnnotation{

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