Arhn - архитектура программирования

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

У меня есть следующая функция, реализованная в моем приложении

Ошибок во время компиляции нет. Тем не менее, я не вижу нужную кнопку аксессуара в аннотациях к карте в симуляторе. Я вижу аннотацию, просто на ней нет кнопки. Есть ли в этом трюк, который мне не хватает?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id 
 <MKAnnotation>)annotation
 {
    static NSString *identifier = @"Vendor";

    //Set upt the right accessory button
    UIButton *myDetailAccessoryButton = [UIButton 
    buttonWithType:UIButtonTypeDetailDisclosure];
    myDetailAccessoryButton.frame = CGRectMake(0, 0, 23, 23);
    myDetailAccessoryButton.contentVerticalAlignment = 
    UIControlContentVerticalAlignmentCenter;
    myDetailAccessoryButton.contentHorizontalAlignment = 
    UIControlContentHorizontalAlignmentCenter;

    [myDetailAccessoryButton addTarget:self
                            action:nil
                  forControlEvents:UIControlEventTouchUpInside];

     if ([annotation isKindOfClass:[Vendor class]])
     {

       MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [self.mapView

       dequeueReusableAnnotationViewWithIdentifier:identifier];
       if (annotationView == nil)
      {
        annotationView = [[MKPinAnnotationView alloc]
                          initWithAnnotation:annotation
                          reuseIdentifier:identifier];
        annotationView.rightCalloutAccessoryView = myDetailAccessoryButton;
        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.calloutOffset = CGPointMake(-5, 5);

    }
    else
    {
        annotationView.annotation = annotation;
    }

    return annotationView;
     }

     return nil;
   }

РЕДАКТИРОВАТЬ Этот код работал, а приведенный выше - нет.

Это почему?

   if ([annotation isMemberOfClass:[MKUserLocation class]])
    return nil;

 MKPinAnnotationView *annView=[[MKPinAnnotationView alloc]
                               initWithAnnotation:annotation
                               reuseIdentifier:@"currentloc"];


   UIButton *myDetailButton = [UIButton 
   buttonWithType:UIButtonTypeDetailDisclosure];
    myDetailButton.frame = CGRectMake(0, 0, 23, 23);
    myDetailButton.contentVerticalAlignment = 
    UIControlContentVerticalAlignmentCenter;
    myDetailButton.contentHorizontalAlignment = 
   UIControlContentHorizontalAlignmentCenter;

[myDetailButton addTarget:self
                   action:nil
         forControlEvents:UIControlEventTouchUpInside];

    annView.rightCalloutAccessoryView = myDetailButton;

   annView.animatesDrop=NO;
   annView.canShowCallout = YES;
   annView.calloutOffset = CGPointMake(-5, 5);
   return annView;

Ответы:


1

Вы уверены, что добавляете аннотации типа Vendor?

Поскольку первый блок кода устанавливает только rightCalloutAccessoryView для аннотаций типа Vendor. Для любого другого типа он возвращает nil, что приводит к общей выноске (без кнопок).

Второй блок кода устанавливает rightCalloutAccessoryView для любого типа аннотации, кроме MKUserLocation.

Кстати, вы установили действие кнопки на nil, что означает, что при нажатии ничего не произойдет.

11.10.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..