как заставить программу знать, какая аннотация выбрана, и иметь доступ к ее свойствам? - PullRequest
0 голосов
/ 29 мая 2010

Пока моя программа может отображать базу данных пользовательских представлений аннотаций. В конце концов я хочу, чтобы моя программа могла отображать дополнительную информацию после нажатия кнопки на всплывающей подсказке. Каждый элемент в базе данных имеет уникальный номер записи, поэтому я подумал, что было бы неплохо добавить этот номер записи в качестве свойства пользовательской аннотации. У меня проблема в том, что после нажатия кнопки и перехода программы в новое представление я не могу получить номер записи выбранной аннотации. Ниже приведен код, который присваивает аннотации свойство Number записи:

for (id mine in mines)
 {
 workingCoordinate.latitude = [[mine latitudeInitial] doubleValue];
 workingCoordinate.longitude = [[mine longitudeInitial] doubleValue];
 iProspectAnnotation *tempMine = [[iProspectAnnotation alloc] initWithCoordinate:workingCoordinate];
 [tempMine setTitle:[mine mineName]];
 [tempMine setAnnotationEntryNumber:[mine entryNumber]];  
   }
[mines dealloc];

Когда выбрана кнопка для аннотации, это код, который инициализирует новый вид:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
mineInformationController *controller = [[mineInformationController alloc] initWithNibName:@"mineInformationController" bundle:nil];

controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:controller animated:YES];
[controller release];
   }

и, наконец, моя попытка получить свойство entryNumber из нового представления, чтобы я мог сравнить его с базой данных mines и получить дополнительную информацию об элементе массива.

iProspectFresno_LiteAppDelegate *appDelegate = (iProspectFresno_LiteAppDelegate *)[[UIApplication sharedApplication] delegate];
NSMutableArray* mines = [[NSMutableArray alloc] initWithArray:(NSMutableArray *)appDelegate.mines];
for(id mine in mines)
{
 if ([[mine entryNumber] isEqualToNumber: /*the entry Number of the selected annotation*/])
       { 
       /* display the information in the mine object */
       }
  }

Итак, как мне получить доступ к этому свойству номера записи в этом новом контроллере представления?

1 Ответ

0 голосов
/ 03 июня 2010

Если бы возникла та же проблема, вам придется пометить аннотации. Просто проверьте это, оно определенно вам поможет:

http://www.everydayone.com/2009/08/mapkit_annotations/

...