Так что я довольно новичок в Xcode и Objective-C.У меня есть несколько объектов ArtPiece с различными атрибутами, хранящимися в массиве.Затем я добавляю их как MKAnnotations в представление карты.Что мне нужно сделать, это отправить ссылку на позицию массива, откуда они пришли, по клику.Я считаю, что MKAnnotations имеют только заголовок, изображение и местоположение членов данных, поэтому, когда я делаю MKAnnotation из объектов, аннотация не сохраняет никаких других атрибутов.Итак, мой вопрос: как мне сохранить ссылку на позицию массива объекта, из которого была создана аннотация, чтобы я мог отправить его другим методам, чтобы они могли получить дополнительную информацию об объекте из массива для получения подробной информации?представления и т. д. Есть ли способ сохранить одно значение int в аннотации?Я не думаю, что есть какие-либо другие идеи?
Вот мой ArtPiece.h:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface ArtPiece : NSObject <MKAnnotation>{
NSString *title;
NSString *artist;
NSString *series;
NSString *description;
NSString *location;
NSString *area;
NSNumber *latitude;
NSNumber *longitude;
UIImage *image;
}
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *artist;
@property (nonatomic, retain) NSString *series;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, retain) NSString *location;
@property (nonatomic, retain) NSString *area;
@property (nonatomic, retain) NSNumber *latitude;
@property (nonatomic, retain) NSNumber *longitude;
@property (nonatomic, retain) UIImage *image;
@end
, а вот .m:
#import "ArtPiece.h"
#import "FindArtController.h"
#import "ArtPiece.h"
#import <MapKit/MapKit.h>
@implementation ArtPiece
- (NSString *)description{
return [NSString stringWithFormat:@"title: %@",title];
}
@synthesize title, artist, series, description, latitude, longitude, location, area, image;
- (CLLocationCoordinate2D)coordinate
{
CLLocationCoordinate2D theCoordinate;
theCoordinate.latitude = [self.latitude doubleValue];
theCoordinate.longitude = [self.longitude doubleValue];
return theCoordinate;
}
@end
Затем я продолжаю создавать объекты этого класса, устанавливать их значения и добавлять их в массив в AppDelegate.Затем в другом классе я использую:
[self.mapView addAnnotations:mainDelegate.mapAnnotations];
, чтобы добавить аннотации на карту.Однако, когда я пытаюсь установить атрибут «Artist» в методе viewforannotation, я получаю «запрос на художника Artist в чем-то, что не является структурой или объединением».
Очевидно, я, должно быть, неправильно делаю эту подклассу, но что я могу изменить?
Вот метод viewforannotation, который у меня есть сейчас.Строка test.artist ... не работает.
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
MKAnnotationView *test=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"reuse"];
test.image = [UIImage imageNamed:@"pao_pin.png"];
[test setCanShowCallout:YES];
[test setUserInteractionEnabled:YES];
test.rightCalloutAccessoryView =
[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
test.artist = annotation.artist;
return test;
}
Итак, я должен: annotation = (ArtPiece *)annotation
Короче говоря, моя цель - сохранить ссылку на позицию массива объекта вэта аннотация была сделана так, чтобы я мог отправить ее другим методам, которые могут получить доступ к этому объекту для подробных видов и т. д.