Am fiert un set foarte complex de servicii web și căutări în jos la simplu cod următor. Trebuie să fie în măsură să adăugați adnotări la o hartă ca răspuns la o căutare (sau în proba de mai jos la un clic pe un buton), apoi permite utilizatorului să faceți clic din nou butonul și a obține un nou set de rezultate. În realitate, va exista un număr diferit, dar în exemplul simplificat, vom adăuga întotdeauna o adnotare la mapview. Eu cred codul meu ar trebui să elimine adnotările existente și să adăugați unul nou, dar scurgeri de 32 de octeți pe împingeri a doua și următoarele butoane. Ce sunt eu lipsesc? (Sau reținerea după caz!)
testViewController.h
#import <UIKit / UIKit.h>
#import <MapKit / MapKit.h>
#import MyMark.h
@interface testViewController: UIViewController {
MKMapView * mapView;
}
@Sfârşit
testViewController.m
- (id) initWithNibName: (NSString *) nibNameOrNil pachet: (NSBundle *) nibBundleOrNil {
if (self = [Super initWithNibName: nibNameOrNil pachet: nibBundleOrNil]) {
// inițializarea personalizată
self.title = @ test;
}
întoarce de sine;
}
- (void) storeLocationInfo: (CLLocationCoordinate2D) Titlul loc: (NSString *) t subtitlu: index (NSString *) st: (int) i {
NSArray * adnotări = [mapView adnotări];
[RemoveAnnotations mapView: adnotări];
MyMark * mymark = [[MyMark alloc] initWithCoordinate: loc];
[MapView addAnnotation: mymark];
[MyMark de presă];
}
- (void) {viewDidLoad
[Super-viewDidLoad];
UIBarButtonItem * barButton = [[UIBarButtonItem aloc] initWithTitle: @ Adăugați punct la harta stil: țintă UIBarButtonItemStylePlain: acțiune de sine: @selector (addPushed)];
[Self.navigationItem setRightBarButtonItem: barButton];
[BarButton de presă];
mapView = [[MKMapView alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)];
mapView.showsUserLocation = FALSE;
mapView.delegate = sine;
[Self.view insertSubview: mapView atIndex: 0];
[Eliberare mapView];
}
- (void) {addPushed
MKCoordinateRegion reg = mapView.region;
[Auto storeLocationInfo: titlu reg.center: @ preț subtitlu: @ titlu index: 1];
}
- (void) {dealloc
[Super-dealloc];
}
MyMark.h
#import <Foundation / Foundation.h>
#import <MapKit / MapKit.h>
@interface MyMark: NSObject <MKAnnotation> {
CLLocationCoordinate2D coordonate;
NSString * titlu;
NSString * subtitrare;
int index;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordonate;
@property (, readonly nonatomic) int index;
@property (nonatomic, reține) NSString * titlu;
@property (reține nonatomic) NSString * subtitlu;
- (id) initWithCoordinate: (CLLocationCoordinate2D) coordonează;
- (id) setCoordinate: (CLLocationCoordinate2D) coordonează;
- (id) SetTitle: (NSString *) T subtitlu: indicele (NSString *) st: (int) i;
@Sfârşit
MyMark.m
#import MyMark.h
@implementation MyMark
@synthesize coordonate, indicele;
titlu @synthesize, subtitlu;
- (id) initWithCoordinate: (CLLocationCoordinate2D) c {
coordonate = c;
NSLog (@ % f,% f, c.latitude, c.longitude);
întoarce de sine;
}
- (id) setCoordinate: (CLLocationCoordinate2D) c {
coordonate = c;
NSLog (@ % f,% f, c.latitude, c.longitude);
întoarce de sine;
}
- (id) SetTitle: (NSString *) t subtitlu: index (NSString *) st: (int) i {
self.title = t;
self.subtitle = st;
index = i;
întoarce de sine;
}
- (void) {dealloc
[Eliberare titlu];
[Eliberare subtitlu];
[Super-dealloc];
}













