레이어를 그리고 그 UIViewController가 주 UI 인 경우 UIViewController를 작성하려고합니다. 그러나, 나는 다른 컨트롤러 내부를 초기화하고 그것은 다음과 같은 오류가 발생 메인 컨트롤러의보기의 하위 뷰와 뷰의 추가하려고하면 (PDFPageViewController를 여기 drawLayer : inContext - 인스턴스로 전송 된 인식 할 수없는 선택자
-[__NSCFType drawLayer:inContext:]: unrecognized selector sent to instance 0x155140
내 사용자의 UIViewController에 대한 관련 코드)는
- (void)loadDocument:(PDFDocument *)document
{
self._document = document;
CGRect pageRect = CGRectIntegral(CGPDFPageGetBoxRect(self._document.page, kCGPDFCropBox));
pageRect.origin.x = (self.view.frame.size.width/2) - (pageRect.size.width/2) - 35;
CATiledLayer *tiledLayer = [CATiledLayer layer];
tiledLayer.delegate = self;
tiledLayer.tileSize = CGSizeMake(1024.0, 1024.0);
tiledLayer.levelsOfDetail = 1000;
tiledLayer.levelsOfDetailBias = 1000;
tiledLayer.frame = pageRect;
contentView = [[UIView alloc] initWithFrame:pageRect];
[contentView.layer addSublayer:tiledLayer];
CGRect viewFrame = self.view.frame;
viewFrame.origin = CGPointZero;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:viewFrame];
scrollView.delegate = self;
scrollView.contentSize = pageRect.size;
scrollView.maximumZoomScale = 1000;
[scrollView addSubview:contentView];
[self.view addSubview:scrollView];
NSLog(@"%@", self); // Just checking if there's nothing overwriting the layer's delegate
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return contentView;
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
if(self._document) {
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(self._document.page, kCGPDFCropBox, layer.bounds, 0, true));
CGContextDrawPDFPage(ctx, self._document.page);
}
}
drawLayer 방법이 있고 의 CALayer의 대리자 자기이다. 나는이 적절한 방법을 수행하지
pageViewController = [[[PDFPageViewController alloc] initWithNibName:NULL bundle:NULL] autorelease];
[pageViewController loadDocument:self.document];
[self.view addSubview:[pageViewController view]];
오전 :
는 그리고 이것은 내 메인 컨트롤러에 전화를 어떻게? 내 주 컨트롤러에 레이어를 그릴 경우 이것이 왜 정상적으로 작동하는지 이해할 수 없으며 PDFViewController에서 그리는 경우 오류가 발생합니다. 방법은 거기에, 대표는 자기입니다. 그렇다면 선택기가 실패하는 이유는 무엇입니까?
메모리 관리 문제처럼 들립니다. NSZombieEnabled를 사용해 보셨습니까? 당신이 뭔가를 과도하게 발표했을 가능성은 있습니까? ARC를 사용하고 있습니까? – jtbandes
@jbandes - 정말 고마워요! NSZombieEnabled를 사용하면 메시지가 내 View Controller의 할당 해제 된 인스턴스로 전송되었다는 메시지를 보았습니다. 그런 다음 과도한 문제를 해결하기 위해 조치를 취했습니다. 이 질문에 대한 답변을 게시하여 표시하고 현상금을받을 수 있도록하십시오. – Raphael
감사합니다. 기꺼이 도와 드리겠습니다! 나는 당신이 별도로 현상금을 할당해야한다고 생각합니다. 대답은 그것을 지정하지 않았기 때문에 그것을 표기합니다. – jtbandes