iOS Mapkit Custom Callout - PullRequest
       1

iOS Mapkit Custom Callout

8 голосов
/ 23 августа 2011

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

http://1.bp.blogspot.com/_xfo3fwc97Fg/TJ9RZrHVOaI/AAAAAAAAAU4/buhP3q3y0G4/s1600/fmip_locate_20100622.png

Любые идеи, как реализовать эту пользовательскую выноску с помощью элементов управления внутри пользовательского интерфейса?

РЕДАКТИРОВАТЬ: Вот мой код из следующего ответа StackOverflow:

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if(annotationView)
        return annotationView;
    else
    {
        UIImage *img = [UIImage imageNamed:@"default_thumb.png"];

        MKAnnotationView *annotationView = 
            [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
        annotationView.canShowCallout = YES;
        annotationView.image = img;
        annotationView.draggable = YES;

        /*
        // change left accessory view button with image
        UIImageView *leftAccView = [[UIImageView alloc] initWithImage:img];
        annotationView.leftCalloutAccessoryView = leftAccView;

        //include a right button to show more info         
        UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [rightButton addTarget:self action:@selector(calloutSubMenu:) forControlEvents:UIControlEventTouchUpInside];
        [rightButton setTitle:annotation.title forState:UIControlStateNormal];
        annotationView.rightCalloutAccessoryView = rightButton;         
         */

        return annotationView;
    }
    return nil;
}

// Customize accessory view
- (void)mapView:(MKMapView *)mapview annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    [mapview deselectAnnotation:view.annotation animated:YES];

    PopOverCallout *popOverCallout = [[PopOverCallout alloc]init];

    UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:popOverCallout];

    self.annotationPopoverController = popOver;

    popOver.popoverContentSize = CGSizeMake(500, 500);

    [popOver presentPopoverFromRect:view.bounds inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];    
}

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

следует вызывать всякий раз, когда к контакту прикасаются, чтобы показать выноску, верно?но происходит то, что отображается пустой регулярный выноски.Что я могу делать не так?

Кстати: у подкласса UIViewController есть только метка на его XIB, и он почти пустой.

1 Ответ

14 голосов
/ 24 августа 2011

Узнал ответ через несколько минут сна.

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

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

, который показывает сноску аннотации. Еще раз спасибо за ответ, г-жа Анна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...