ios - 派生 MKAnnotationView 并将其链接到 NIB 文件

标签 ios mkannotationview

我需要从 MKAnnotationView 派生一个新类,就像在 WeatherMap 中一样来自 Apple 的项目,但图形部分通过 NIB 文件定义:有没有办法做到这一点?我必须创建一个新的 Controller 吗?

最佳答案

一种方法是从 nib 加载 View ,然后将 View 作为 subview 添加到 MKAnnotationView。您不需要创建任何新的 Controller 。

首先,创建您的 MKAnnotationView 子类,其中包含您将加载 NIB 的自定义 View 的属性:

@interface MapAnnotationView : MKAnnotationView 

@property (nonatomic, retain) IBOutlet UIView* loadedView;

然后,在此类的 init 方法中,加载 nib 并添加为 subview :
- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString*)reuseIdentifier
{
    self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
    if (self != nil)
    {
        [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
        if (loadedView){
            [self addSubview:loadedView];
        }
    }
    return self;
}

最后,创建您的 MyCustomView NIB(作为 UIView)。将文件的所有者设为上述 MapAnnotationView 类,并将 View 附加到上面定义的 IBOutlet。

就是这样。

关于ios - 派生 MKAnnotationView 并将其链接到 NIB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984638/

相关文章:

ios - Firebase 推送通知 swift 3

iphone - 如何为 View 设置背景图像?

iphone - 如何覆盖 MKAnnotationView 中的 "selected state"图像?

ios - 如何给 MKAnnotationView 添加回调?

ios - 检测用户是否移动了 map 或者它是否以编程方式发生 iOS Mapkit

ios - AWS S3 iOS 开发工具包 : How to resume upload after connection is interrupted?

ios - 如何在 swift4 中使用 Rxalamofire 发送 URL 请求

ios - UIPinchGestureRecognizer 如何正确使用?

iOS - MKAnnotationView 自定义 UIButton 问题

swift - 自定义 MKAnnotationView swift : func mapView does nothing