Получение и передача данных аннотаций через модальный переход в раскадровке

У меня есть программа, которая создает аннотации карты с помощью кнопки «Раскрытие сведений о пользовательском интерфейсе», которая делает модальный переход к подробному представлению аннотации. Приложение было создано с использованием раскадровки.

Вот код для определения аннотаций:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"PIN"];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    [button addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchUpInside];


    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        pin.animatesDrop = YES;
        return nil;
    }

    else {
        [pin setPinColor:MKPinAnnotationColorPurple];
    }

    pin.rightCalloutAccessoryView = button;
    pin.animatesDrop = YES;
    pin.canShowCallout = YES;

    return pin;
}

Вот метод calloutAccessoryControlTapped:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{

    NewClass *annView = view.annotation;

    AnnotationView *detailView = [[AnnotationView alloc]init];

    detailView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    detailView.buildingName = [NSString stringWithFormat:@"my dictionary is %@", annView.title];

    detailView.desciptionText = annView.title;

    [self presentViewController:detailView animated:YES completion:nil];

}

Наконец, вот метод prepareForSegue:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if([segue.identifier isEqualToString:@"ShowMoreInfo"]){

        AnnotationView *destViewController = segue.destinationViewController;

        //destViewController.buildingName = ; set to name of building of selected annotation

        //destViewController.desciptionText = ; set to description of building of selected annotation (from an array or from passed data)

        destViewController.picName = ;

    }
}

Как мне взять информацию из метода callOutAccessoryControlTapped и установить значения в методе prepareForSegue для этих значений?

Когда я использую точки останова для отслеживания значений данных, annView.title содержит строковое значение, но оно никогда не присваивается значению в контроллере подробного представления для подробного представления аннотаций.

Будем признательны за любую информацию о том, как передать данные из выбранной аннотации в метод подготовки к переходу.


person user2012360    schedule 25.01.2013    source источник


Ответы (1)


Получите заголовок аннотации, используя

let someTitle = sender!.title!!

затем используйте someTitle для поиска/фильтрации ваших данных по рисунку, названию здания (или тому, что вы ищете).

person Shane    schedule 04.03.2016