OStack程序员社区-中国程序员成长平台

标题: ios - 无法在 MKPinAnnotationView 上设置标题 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 23:10
标题: ios - 无法在 MKPinAnnotationView 上设置标题

我已按照本教程进行操作: http://www.shawngrimes.me/2011/04/custom-map-pins-for-mapkit/#comment-193

但我无法添加标题和描述

(在此处查看我的代码 http://pastebin.com/03mDLc9q)



Best Answer-推荐答案


您正在尝试将名称和描述设置为注释 View 的属性,您应该在注释对象上使用 titlesubtitle - MyAnnotationClass,注解 View 在渲染标注时将使用该对象的标题和副标题。

我更改了您的代码以在此处工作:http://pastebin.com/YRGYhQev

@interface MyAnnotationClass : NSObject<MKAnnotation>

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

-(id) initWithCoordinateCLLocationCoordinate2D) coordinate;

@end


MyAnnotationClass.m

#import "MyAnnotationClass.h"

@implementation MyAnnotationClass

-(id) initWithCoordinateCLLocationCoordinate2D) coordinate{
    self=[super init];
    if(self){
        _coordinate = coordinate;
    }
    return self;
}

-(void) dealloc{
    [_title release];
    [_subtitle release];
    [super dealloc];
}
@end


ViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface ViewController : UIViewController<MKMapViewDelegate> {
    IBOutlet MKMapView *_myMapView;
    NSArray *_myAnnotations;
}

@property (nonatomic, retain) NSArray *myAnnotations;
@property (nonatomic, retain) IBOutlet MKMapView *myMapView;

@end


ViewController.m

#import "ViewController.h"
#import "AppDelegate.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
#import "laceMark.h"  
#import "MyAnnotationClass.h"
@interface ViewController ()

@end

@implementation ViewController
@synthesize myMapView = _myMapView;
@synthesize myAnnotations = _myAnnotations;

- (id)initWithNibNameNSString *)nibNameOrNil bundleNSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

-(void) viewDidLoad{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];

    //Initialize annotation
    MyAnnotationClass *commuterLotAnnotation=[[MyAnnotationClass alloc] initWithCoordinate:CLLocationCoordinate2DMake(appDelegate.latitude , appDelegate.longitude)];
    commuterLotAnnotation.title = @"Hello title";
    commuterLotAnnotation.subtitle = @"Correct";

    MyAnnotationClass *overflowLotAnnotation=[[MyAnnotationClass alloc] initWithCoordinate:CLLocationCoordinate2DMake(appDelegate.latitude , appDelegate.longitude)];
    overflowLotAnnotation.title = @"Hello title";
    overflowLotAnnotation.subtitle = @"Correct";

    //Add them to array
    self.myAnnotations=[NSArray arrayWithObjects:commuterLotAnnotation, overflowLotAnnotation, nil];

    //Release the annotations now that they've been added to the array
    [commuterLotAnnotation release];
    [overflowLotAnnotation release];

    //add array of annotations to map
    [_myMapView addAnnotations:_myAnnotations];
}


-(MKAnnotationView *)mapViewMKMapView *)mapView viewForAnnotationid)annotation{
    static NSString *parkingAnnotationIdentifier=@"arkingAnnotationIdentifier";

    if([annotation isKindOfClass:[MyAnnotationClass class]]){
        //Try to get an unused annotation, similar to uitableviewcells
        MKAnnotationView *annotationView=[_myMapView dequeueReusableAnnotationViewWithIdentifier:parkingAnnotationIdentifier];

        //If one isn't available, create a new one
        if(!annotationView){
            annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:parkingAnnotationIdentifier];
            //Here's where the magic happens
            annotationView.image=[UIImage imageNamed"apple.gif"];
            annotationView.canShowCallout = YES;
        }
        return annotationView;
    }
    return nil;
}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientationUIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


@end

关于ios - 无法在 MKPinAnnotationView 上设置标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905274/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4