xcode - 我有 30 个注释,并且还在增加。正在寻找一种更简单的编码方法?

标签 xcode ios4 mkmapview mkannotation mkannotationview

我正在将多个注释编码到一个项目中。目前我有 30 个注释,并且还在增加。我想知道是否有一种更简单的方法可以为每个注释创建一个 annotation.h 和 annotation.m 类。

目前在我的 map View Controller 中,我创建了注释对象并将它们放在一个数组中,这对我来说效果很好,但正如您可以想象的那样,一旦您有大量注释,就需要管理大量代码,而不是更不用说大量的类(class)了。

例如,其中一个注释类如下所示:

注解.h:

//Annotation.h

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

@interface Annotation : NSObject {

}

@end

注释.m:

//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

我正在考虑读取包含所有注释的 CSV 文件是最好的方法,我选择的任何选项都会导致我重写大量代码,这就是为什么我在我之前问这个问题做任何事情。有人有什么建议吗?

最佳答案

不幸的是,MapCallouts 示例应用程序没有提供一个很好的示例来说明如何实现通用注释类。

实现 MKAnnotation 协议(protocol)的类可以提供可设置的 coordinate 属性或采用坐标的自定义 init 方法。

但是,由于您使用的是 iOS 4.0,更简单的选择是只使用预定义的 MKPointAnnotation提供您可以设置的属性的类。例如:

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

注释数据当然可以来自任何地方,您可以遍历数据以在 map 上创建注释。

关于xcode - 我有 30 个注释,并且还在增加。正在寻找一种更简单的编码方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011931/

相关文章:

iphone - "EXC_BAD_ACCESS"当在 tableView 和 mapView 之间切换太快时

iOS Thrift SSL 连接

ios - Xcode 5.0.1 在 OS X Mavericks 上崩溃

xcode - 直接从 View Controller 启动的 Segues 必须有一个标识符

objective-c - 使用 Grand Central Dispatch 时如何发布 NSNotification?

function - iPhone iOS 4 - 安排应用程序在特定时间和日期运行功能

iphone - 一次禁用 Root View 交互和启用 subview 交互

iphone - 使用 JSON 搜索 MKMapview 往往不会返回任何结果,或者返回不正确的结果

ios - MKAnnotation 不可见*直到*用户拖动 map

iphone - 在 Swift 中使用枚举和 switch case 组合