Как изменить размер выноски после сброса названия / субтитров - PullRequest
3 голосов
/ 14 октября 2010

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

1) Есть ли событие, которое я могу вызвать, чтобы снова изменить размер всплывающего окна выноски?

2) Кроме того, я проверяю, что сначала у аннотации действительно есть заголовок, прежде чем я перезагружаю заголовок, но у меня возникли некоторые проблемы с его преобразованием после проверки, может кто-нибудь помочь мне с этим? Я все еще новичок в объективе-c, и этот ненадолго со мной связался.


#import <Foundation/Foundation.h>
#import <MapKit/MKAnnotation.h>

@interface PushPin : NSObject <MKAnnotation> {
 CLLocationCoordinate2D _coordinate;
 NSString *_title;
 NSString *_subtitle;
 NSString *_ID;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *subtitle;
@property (nonatomic, retain) NSString *ID;

- (id) initWithCoordinateAndInformation:(CLLocationCoordinate2D)coordinate title:(NSString *)title subtitle:(NSString *)subtitle;

@end

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
 NSLog(@"Annotation was TAPPED!");

 if ([view.annotation isKindOfClass:[PushPin class]]) {
  view.annotation.title = @"test";  

          // warning here, that this might not be implemented...
          // but it is for this class type, how do I cast it to the correct type?
 }

}

1 Ответ

0 голосов
/ 15 октября 2010

По-прежнему возникают некоторые проблемы, но, возможно, ближе.Я попробовал это, но все равно не повезло.Я частично рисую код из http://digdog.tumblr.com/post/252784277/mapkit-annotation-drag-and-drop-with-callout-info

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    NSLog(@"Annotation was TAPPED!");

    if ([view.annotation isKindOfClass:[PushPin class]]) {
        ((PushPin *)view.annotation).title = @"test";
    }

    [self willChangeValueForKey:@"subtitle"]; // Workaround for SDK 3.0, otherwise callout info won't update.
    [self didChangeValueForKey:@"subtitle"]; // Workaround for SDK 3.0, otherwise callout info won't update.

    [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"MKAnnotationCalloutInfoDidChangeNotification" object:self]];
}

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

...