2012-03-07 3 views
2

У меня возникли проблемы с настройкой title и Подзаголовок моей метки.iOS - MKPlacemark set title issue

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
      [geocoder geocodeAddressString:location 
       completionHandler:^(NSArray* placemarks, NSError* error){ 
        if (placemarks && placemarks.count > 0) { 
         CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
         MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 

         placemark.title = @"Some Title"; 
         placemark.subtitle = @"Some subtitle"; 

         MKCoordinateRegion region = self.mapView.region; 
         region.center = placemark.region.center; 
         region.span.longitudeDelta /= 8.0; 
         region.span.latitudeDelta /= 8.0; 

         [self.mapView setRegion:region animated:YES]; 
         [self.mapView addAnnotation:placemark]; 
        } 
       } 
      ]; 

placemark.title = @"Some Title"; и placemark.subtitle = @"Some subtitle";

дает мне ошибку:

Assigning to property with 'readonly' attribute not allowed 

Почему я не могу установить заголовок и подзаголовок здесь?

ответ

6

Думал, что разбудил эту тему и даю вам решение, с которым я столкнулся.

Насколько я знаю, название/субтитры MKPlacemark являются свойствами readonly из-за присущего присваиванию. Тем не менее, с решением я нашел, вы можете просто передать свой MKPlacemark в MKPointAnnotation следующим образом:

CLPlacemark *topResult = [placemarks objectAtIndex:0]; 

// Create an MLPlacemark 

MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 

// Create an editable PointAnnotation, using placemark's coordinates, and set your own title/subtitle 
MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
point.coordinate = placemark.coordinate; 
point.title = @"Sample Location"; 
point.subtitle = @"Sample Subtitle"; 


// Set your region using placemark (not point)   
MKCoordinateRegion region = self.mapView.region; 
region.center = placemark.region.center; 
region.span.longitudeDelta /= 8.0; 
region.span.latitudeDelta /= 8.0; 

// Add point (not placemark) to the mapView            
[self.mapView setRegion:region animated:YES]; 
[self.mapView addAnnotation:point]; 

// Select the PointAnnotation programatically 
[self.mapView selectAnnotation:point animated:NO]; 

Пожалуйста, обратите внимание, что окончательное [self.mapView selectAnnotation:point animated:NO]; обходной путь для автоматического хлопков вверх в метках. Однако animated:BOOL часть только кажется, работать с NO в iOS5 - Вы можете реализовать обходной путь, если у вас возникли проблемы вручную выскакивают точку-аннотацию, которую можно найти здесь: MKAnnotation not getting selected in iOS5

Я уверен, что вы К настоящему времени вы уже нашли свое собственное решение, но я надеюсь, что это, в некотором роде, информативное.