私はこのチュートリアルに従いました:http: //www.shawngrimes.me/2011/04/custom-map-pins-for-mapkit/#comment-193
タイトルと説明を追加できません
(ここで私のコードを参照してくださいhttp://pastebin.com/03mDLc9q)
私はこのチュートリアルに従いました:http: //www.shawngrimes.me/2011/04/custom-map-pins-for-mapkit/#comment-193
タイトルと説明を追加できません
(ここで私のコードを参照してくださいhttp://pastebin.com/03mDLc9q)
名前と説明を注釈のビューのプロパティとして設定しようとしています。注釈オブジェクトを使用する必要がありtitleますsubtitle- MyAnnotationClass、注釈ビューは、コールアウトがレンダリングされるときにこのオブジェクトのタイトルとサブタイトルを使用します。
ここで動作するようにコードを変更しました:http://pastebin.com/YRGYhQev
@interface MyAnnotationClass : NSObject<MKAnnotation>
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *subtitle;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-(id) initWithCoordinate:(CLLocationCoordinate2D) coordinate;
@end
MyAnnotationClass.m
#import "MyAnnotationClass.h"
@implementation MyAnnotationClass
-(id) initWithCoordinate:(CLLocationCoordinate2D) 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 "PlaceMark.h"  
#import "MyAnnotationClass.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize myMapView = _myMapView;
@synthesize myAnnotations = _myAnnotations;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)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 *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation{
    static NSString *parkingAnnotationIdentifier=@"ParkingAnnotationIdentifier";
    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)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
    チュートリアルのMyAnnotationClassインターフェースは次のとおりです。
@interface MyAnnotationClass : NSObject
使用したときMKAnnotation、注釈インターフェイスを次のように設定しました。
@interface MyAnnotationClass : MKAnnotationView <MKAnnotation> 
次に、MyAnnotationClass.mファイルに次のメソッドがあります。
- (NSString *)title{
    return self.name;
}
- (NSString *)subtitle{
    return self.description;
}