Mam kontroler widoku mapy (UIViewController, MKMapView), z jego delegatem (HCIResultMapViewController).niestandardowe zmienne danych w mkannotation
Chcę mieć następującą funkcjonalność w tej części.
1). Chciałbym wykorzystać moje zamówienie NSObject, tak że mogę skojarzyć pozostały szczegóły wraz z podstawowych jednostek, takich jak tytuł, napisy itp
Stąd według moich potrzeb I kodowane następująco
W HCIResultMapViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
_houseList = [[_resultList objectForKey:@"result"] objectForKey:@"listings"];
// NSLog([_houseList description]);
int i = 0;
for (NSDictionary *house in _houseList) {
HCIAnnotationViewController *annotation = [[HCIAnnotationViewController alloc]
initwithHouse:house];
[_mapView addAnnotation:annotation];
// NSLog(@"asdjhasdjsajdhaksdjghasdasdjahsdahskvdka");
self.currIdentifier = i;
i++;
}
[_mapView setShowsUserLocation:NO];
}
Pozostałe funkcje delegata
-(void) mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
for (NSObject<MKAnnotation> *annotation in _mapView.selectedAnnotations) {
NSLog(@"hellomaster");
NSLog(annotation.title);
if ([annotation isKindOfClass:[HCIAnnotationViewController class]]) {
NSLog(@"hellomaster");
}
}
ostatni
-(MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
NSString *identifier = @"currIdentifier";
MKPinAnnotationView *annotationView =
(MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation
reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.tag = self.currIdentifier;
// Create a UIButton object to add on the
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
[annotationView setRightCalloutAccessoryView:rightButton];
/*
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[leftButton setTitle:annotation.title forState:UIControlStateNormal];
[annotationView setLeftCalloutAccessoryView:leftButton];
*/
return annotationView;
}
Ale widzę, że równoważność klas zawodzi. Czy możesz mi powiedzieć, co robię źle?
Myślę, że chcę, w prostych słowach, jak wysłać dane (NSDictionary *) wraz z adnotacją, aby móc je odzyskać, kiedy tylko chcę?
Proszę nie oznaczać tego jako powtarzające się pytanie. Próbowałem wielu pytań, googlowałem itp., Ale nie mogłem znaleźć odpowiedniego rozwiązania.
Chcesz utworzyć adnotację niestandardową, np. Tytuł, podtytuł? – iPatel
nie. Chcę, aby moja adnotacja zawierała NSDictionary * wraz z takimi podmiotami, jak tytuł, podtytuł. –