Удалить опцию кнопки информации из заголовка аннотации карты

ПРЕАМБУЛА

Я реализовал аннотацию карты, используя MKMapView и MapAnnotation. При касании отображается заголовок, как показано на следующем рисунке.

заголовок аннотации карты

Я использовал следующий LOC для реализации указанной аннотации карты:

// VENUE 1 PIN.

CLLocationCoordinate2D venue1Location = CLLocationCoordinate2DMake(-27.5, 153.5);

MapAnnotation *venue1Pin = [[MapAnnotation alloc] initWithTitle:@"1 ONE ST" Location:venue1Location];

ПРОСМОТР ДЛЯ АННОТАЦИИ МЕТОД ДЕЛЕГАТА:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MapAnnotation class]])
{
    MapAnnotation *venueLocationAnnotation = (MapAnnotation *)annotation;

    MKAnnotationView *venueLocationAnnotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"customAnnotation"];

    venueLocationAnnotationView.rightCalloutAccessoryView.hidden = YES;

    if (venueLocationAnnotationView == nil)

        venueLocationAnnotationView = venueLocationAnnotation.annotationView;

    else

        venueLocationAnnotationView.annotation = annotation;


        return venueLocationAnnotationView;

}
else
{
    return nil;
}

}

ВОПРОС

Как удалить информационную кнопку из вышеупомянутого заголовка аннотации карты?


person arman    schedule 19.02.2015    source источник
comment
Пожалуйста, покажите свой метод делегата viewForAnnotation.   -  person    schedule 19.02.2015
comment
Пожалуйста, смотрите выше @Anna   -  person arman    schedule 19.02.2015
comment
Я реализовал место проведенияLocationAnnotationView.rightCalloutAccessoryView.hidden = YES; в методе делегата и пользовательском классе аннотаций.   -  person arman    schedule 19.02.2015
comment
Похоже, что в классе MapAnnotation у вас есть метод с именем annotationView. В этом методе вы должны установить rightCalloutAccessoryView. Это отменяет эффект (если есть) строки hidden = YES, которая появляется до установки представления.   -  person    schedule 19.02.2015
comment
Спасибо за совет. Я добавил еще один hidden = YES к каждому из концов if/else метода делегата, и кнопка наконец исчезла. Любая идея, как центрировать текст заголовка? @Анна   -  person arman    schedule 19.02.2015
comment
Если вместо этого вы установите его равным нулю, заголовок должен правильно центрироваться. Установка скрытого режима по-прежнему оставляет место для скрытого вида. Но почему бы не изменить сам метод annotationView и не установить rCAV в первую очередь?   -  person    schedule 19.02.2015


Ответы (3)


Вы можете использовать следующее утверждение:

Для этого вам необходимо реализовать следующий метод делегата:

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
         ...
         venue1Pin.rightCalloutAccessoryView = nil;
         ...
    }
person Yuvrajsinh    schedule 19.02.2015
comment
Я реализовал ваше предложение. Кнопка i не исчезает. - person arman; 19.02.2015
comment
@arman вы реализовали метод viewForAnnotation: делегата? - person Yuvrajsinh; 19.02.2015
comment
да. Я реализовал MKMapView и настроил все соответствующие LOC. Представление аннотаций карты настроено на основе пользовательского класса с изображениями и т. Д. Изображения / заголовки меняются в зависимости от различных входных данных, которые я делаю. - person arman; 19.02.2015
comment
В коде OP место проведения1Pin является объектом модели аннотаций, а не представлением. Свойство rightCalloutAccessoryView находится в объекте представления аннотации, а не в модели. - person ; 19.02.2015

person    schedule
comment
Я реализовал ваше предложение. Кнопка i не исчезает. - person arman; 19.02.2015
comment
По умолчанию rightCalloutAccessoryView равен нулю, когда создается новый MKPinAnnotationView, поэтому установка скрытого свойства ничего не делает (поскольку rCAV равен нулю). Кнопка показывает только то, что OP настраивает rCAV на что-то, и в этом случае им просто не следует устанавливать его с самого начала. - person ; 19.02.2015

person    schedule
comment
Я реализовал ваше предложение. Кнопка i не исчезает. - person arman; 19.02.2015
comment
По умолчанию rightCalloutAccessoryView равен нулю, когда создается новый MKPinAnnotationView, поэтому установка скрытого свойства ничего не делает (поскольку rCAV равен нулю). Кроме того, код внутри блока if (!pinView) ничего не делает, потому что этот блок выполняется только в том случае, если pinView имеет значение nil (и установка свойств для объекта nil не имеет никакого эффекта). - person ; 19.02.2015