集中代码

时间:2011-04-25 15:20:54

标签: iphone objective-c mkmapview

- (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] autorelease];
    pview.pinColor = MKPinAnnotationColorRed;
    pview.canShowCallout = YES;
    pview.animatesDrop = YES;
}
else
{
    [myMap.userLocation setTitle:@"I am Here"];
}
return pview;

 }  

上面给出了带注释引脚的地图视图。我必须在8个以上的文件中编写这段代码。任何人都可以告诉我如何集中这段代码?我的意思是只创建一个类,并且通过该类的对象,我可以在任何其他视图中添加地图。

谢谢..

1 个答案:

答案 0 :(得分:1)

由于代码的其余部分不清楚,很难提供建议,但您可能会先尝试分析它; 这8个代码部分有什么共同之处,有什么不同?

然后你应该弄清楚你是否需要创建和保持对任何局部变量的引用,让我们说你的地图对象,或类似的东西。 如果是这样,那么子类化将是第一个看的选择, 如果没有那么Obj-C类别可能会做(http://macdevelopertips.com/objective-c/objective-c-categories.html)。 P.S:你不能用这个添加成员字段,只允许行为(方法)。

如果只需要除了这些之外几乎没有任何行为的对象,那么你可以使它们成为仅包含参数的普通对象。

甚至你可以使用静态方法,比如(+(void)blahblah;)只是为了简短,但除非你确定这种行为本质上是通用的,否则不要这样做......

嗯,这里有一些建议,如果你提供更多信息,我可以在其中一个方向写更详细的信息

祝你好运!