2014-11-27 6 views
0

Моя проблема Я не jnow, как получить доступ родительских свойств в дочернем классеSwift, доступ родительские свойства в дочернем классе

class imageOverlayRenderer: MKOverlayRenderer { 
var bar = self.overlay 
} 

MKOverlayRenderer должен обладать свойством наложения

То, что я действительно хочу это написать собственный подкласс MKOverlayRender для рендеринга изображения, код в Objective C является:

#import <MapKit/MapKit.h> 

@interface PVParkMapOverlayView : MKOverlayRenderer 

- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage; 

@end 

и

#import "PVParkMapOverlayView.h" 

@interface PVParkMapOverlayView() 

@property (nonatomic, strong) UIImage *overlayImage; 

@end 

@implementation PVParkMapOverlayView 

- (instancetype)initWithOverlay:(id<MKOverlay>)overlay overlayImage:(UIImage *)overlayImage { 
    self = [super initWithOverlay:overlay]; 
    if (self) { 
     _overlayImage = overlayImage; 
    } 

    return self; 
} 

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context { 
    CGImageRef imageReference = self.overlayImage.CGImage; 

    MKMapRect theMapRect = self.overlay.boundingMapRect; 
    CGRect theRect = [self rectForMapRect:theMapRect]; 

    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextTranslateCTM(context, 0.0, -theRect.size.height); 
    CGContextDrawImage(context, theRect, imageReference); 
} 

@end 

ответ

0

Вы не можете ссылаться на self в обычном объявлении свойства - вы должны объявить свойство lazy:

class imageOverlayRenderer: MKOverlayRenderer { 
    lazy var bar: MKOverlay! = self.overlay 
} 
Смежные вопросы