开发者

Centralized the code

- (void) setTheMap
 {
myMap.mapType = MKMapTypeStandard;
[myMap setDelegate:self];
CLLocationCoordinate2D coord = {latitude:myValue  , longitude:myValue };
MKCoordinateSpan span = {latitudeDelta:0.05f , longitudeDelta: 0.05f};
MKCoordinateRegion region = {coord , span};

[myMap setRegion:region];
[self.view addSubview:myMap];

PantryAnnotation *dis = [[PantryAnnotation alloc] init];
dis.coordinate = region.center;
dis.title = row.panName;
dis.subTitle = row.geo_lat;

[myMap addAnnotation:dis];
 }

 - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id<MKAnnotation>)annotation
 {    MKPinAnnotationView *pview = nil;
if (annotation != myMap.userLocation)
{
    static NSString *defalt = @"Volunteer";
    pview = (MKPinAnnotationView *)[myMap dequeueReusableAnnotationViewWithIdentifier:defalt];

    if ( pview == nil ) 
        pview = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defalt]开发者_如何学C autorelease];
    pview.pinColor = MKPinAnnotationColorRed;
    pview.canShowCallout = YES;
    pview.animatesDrop = YES;
}
else
{
    [myMap.userLocation setTitle:@"I am Here"];
}
return pview;

 }  

The above gives me map view with annotation pin. I have to write this code in more than 8 files. Can any one tell me how can I centralized this code ? I mean to create only one class and by object of that class I can add the map in any other view.

Thanks..


Since the rest of your code is not clear, it is hard to give advice, but you may try to analyze it first; what is common in these 8 code parts, and what is different?

Then you should figure out if you need to create and hold references to any local variables, lets say your map objects, or something like that. If so, then subclassing would be the first choice to look at, if not then an Obj-C category would probably do (http://macdevelopertips.com/objective-c/objective-c-categories.html). P.S: you cannot add member fields with this, only behavior (methods) are allowed.

If you need only objects with little to none behavior other than these, then you may make them plain objects holding the parameters only.

Or even you may use static methods like ( +(void) blahblah; ) just to be short, but dont do it unless you are sure that the behavior is generic in nature...

Well, a soup of advice here, if you provide more info, i can write in one of these directions in more details

good luck!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜