2009-12-08 4 views
1
을 사용하여 제대로 초기화되지 않았습니다.

인터페이스 작성기를 사용하여 서브 뷰를 올바르게 초기화하는 데 문제가 있습니다. 나는 다음과 같은 뷰 계층 구조를 가지고있다 (UIWindow -> BlankCanvasView -> StalkerView). BlankCanvasView는 UIView의 서브 클래스에서 StalkerView는 BlankCanvasView하위 뷰가 IB

의 함께 IBOutlet

@ 인터페이스의 BlankCanvasView입니다 : {

IBOutlet UIView *stalker; 

}

@end

있는 UIView 내가 스토커 사이의 연결을 설립했습니다 BlankCanvasView의 아웃렛과 하위 뷰. 그러나, 내 touchesBegin BlankCanvasView 메서드에서 스토커 콘센트 없음입니다. 접촉에 대해서는 아래를 참조하십시오.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

NSLog(@"Touch Begin detected!!!"); 
NSLog(@"Stalker instance %@", stalker); 

[UIView beginAnimations:@"StalkerAnimation" context:nil]; 

UITouch *touch = [touches anyObject]; 

    //stalker is nil here!!! 
[stalker setCenter:[touch previousLocationInView:self]]; 

[UIView commitAnimations]; 

}

나는 무엇을 놓치고? iTunesU에서 예제를 시도하고 따라 할 때 데모 응용 프로그램 중 아무 것도 하위 뷰를 제대로로드하지 않는 것 같습니다.

답변

0

IB에서 '스토커'보기를 만드는 경우보기 계층 구조의 일부 (다른보기의 하위보기로 추가됨)이거나 순서대로 코드에 유지되어야합니다. 적재 후 방출되지 않아야한다. 당신이 스토커 @synthesize 확인

@interface BlankCanvasView : UIView 
{ 
    UIView *stalker; 
} 

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

@end 

; 당신이 당신의 스토커 변수에 대한 유지 속성을 사용하는 경우,이 자동으로 당신을 위해 처리를 이동합니다

@implementation BlankCanvasView 
@synthesize stalker; 

- (void)dealloc 
{ 
    self.stalker = nil; 
    [super dealloc]; 
} 

@end 
+0

안녕 슬레이어, 실제로 단지 바르과 의미를 유지와 속성을 사용하여 그것을 두 가지를 시도했다 : 당신은 당신의보기를 할당 해제 할 때 당신의 BlankCanvasView의 구현 및 전무로 속성을 설정합니다. 두 경우 모두 속성 또는 iVar이 nil입니다. 이 주제에 대한 다른 비슷한 게시물을 살펴보면 UIView 클래스의 awakeFromNib 메서드를 재정의해야하는지 궁금합니다. – lcranf

관련 문제