tutorial - xcode 9 auto layout



Ich habe 30 Anmerkungen und wächst. Suchen Sie nach einer einfacheren Möglichkeit, dies zu programmieren? (2)

Ich kodiere mehrere Anmerkungen in einem Projekt. Derzeit habe ich 30 Anmerkungen und wächst. Ich frage mich, ob es eine einfachere Möglichkeit gibt, eine Annotation.h- und Annotation.m-Klasse für jede einzelne Annotation zu erstellen.

Momentan erstelle ich in meinem Map-View-Controller die Annotation-Objekte und platziere sie in einem Array, das für mich gut funktioniert hat, aber wie du dir vorstellen kannst, ist es viel Code zu verwalten, sobald du Tonnen von Annotationen hast, ganz zu schweigen von Tonnen von Klassen.

So sieht beispielsweise eine der Annotation-Klassen folgendermaßen aus:

Anmerkung.h:

//Annotation.h

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

@interface Annotation : NSObject {

}

@end

Anmerkung

//Annotation.m

#import "Annotation.h"

@implementation Annotation

-(CLLocationCoordinate2D)coordinate;
{
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = -45.866416;
    theCoordinate.longitude = 170.519931;
    return theCoordinate; 
}

-(NSString *)title
{
    return @"Title";
}

-(NSString *)subtitle
{
    return @"Subtitle";
}

-(void)dealloc
{
    [super dealloc];
}

@end

Ich denke, in einer CSV-Datei mit allen Anmerkungen zu lesen wäre der beste Weg zu gehen, jede Option, die ich wähle, führt dazu, dass ich viel Code umschreiben, weshalb ich diese Frage stelle, bevor ich etwas mache. Hat jemand irgendwelche Vorschläge?

https://src-bin.com


Answer #1

Die MapCallouts-Beispielanwendung bietet leider kein gutes Beispiel für die Implementierung einer generischen Annotationsklasse.

Ihre Klasse, die das MKAnnotation Protokoll implementiert, kann eine einstellbare coordinate oder eine benutzerdefinierte MKAnnotation bereitstellen, die die Koordinaten verwendet.

Da Sie jedoch iOS 4.0 verwenden, ist es einfacher, die vordefinierte MKPointAnnotation Klasse zu verwenden, die Eigenschaften bereitstellt, die Sie festlegen können. Beispielsweise:

MKPointAnnotation *annot = [[MKPointAnnotation alloc] init];
annot.title = @"Title";
annot.subtitle = @"Subtitle";
annot.coordinate = CLLocationCoordinate2DMake(-45.866416, 170.519931);
[mapView addAnnotation:annot];
[annot release];

Die Annotationsdaten können natürlich von überall her kommen, und Sie können die Daten durchlaufen, um die Annotationen auf der Karte zu erstellen.






mkannotationview