Many solutions to associate annotation whit Model Array.
The below solution is what i uesd:
1.add int variable "tag" in your PlaceDealAnnotation
@property (nonatomic, assign) int tag;
2.change the "for cycle" in setMapAnnotations: method
//After region has been set you need to populate the annotations
for (int tag = 0; tag < [self.dealMapModelArray count]; tag++) {
//Get the place from the model objects stored in the model array
DealListModel *dealLstObj = [self.dealMapModelArray objectAtIndex:tag];
PlaceDealAnnotation *placeAnnontation = [[PlaceDealAnnotation alloc]init];
double tempPlaceLatitude = [dealLstObj.placeLatitude doubleValue];
double tempPlaceLongitude = [dealLstObj.placeLongitude doubleValue];
//set tag here
placeAnnontation.tag = tag;
location.latitude = tempPlaceLatitude;
location.longitude = tempPlaceLongitude;
placeAnnontation.coordinate = location;
placeAnnontation.title = dealLstObj.placeDescription;
//adding array of locations map
[placeLocations addObject:placeAnnontation];
}
3.implement the following mapView's delegate method:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
PlaceDealAnnotation * annotation = [view annotation];
int tag = annotation.tag;
//get the model your want here
DealListModel *targetModel = [self.dealMapModelArray objectAtIndex:tag];
//go to the next view controller here
}