2014-11-27 5 views
0

스위프트, 액세스 부모 속성 내 문제는 내가 자식 클래스 내에서 부모 속성에 액세스하는 방법을 jnow하지는입니다

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

MKOverlayRenderer 내가 정말 원하는 것은 속성 오버레이

을 가져야한다 이미지를 렌더링하는 MKOverlayRender의 사용자 지정 하위 클래스를 작성, 목표 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 
}