2012-07-21 4 views
0

HypnosisViewController.m에는 UIView 하위 클래스 인 HypnosisView을 창에 추가하는 코드가 있습니다. 내 목표는컨트롤이 값을 변경하면 HypnosisView 인스턴스의 속성 UIColor circleColor을 설정하는 것입니다.UIViewController에서 UIView 하위 클래스 메서드를 호출하는 방법?

- (void) loadView 
{ 
    CGRect frame = [[UIScreen mainScreen] bounds]; 
    HypnosisView *v = [[HypnosisView alloc] initWithFrame:frame]; 
    CGRect segment = CGRectMake(200, 300, 75, 20); 
    UISegmentedControl *colors = [[UISegmentedControl alloc]initWithFrame:segment]; 
    [v addSubview:colors]; 
    [self setView:v]; 
} 

나는 그렇게 같은 IBAction 콘센트를 사용 여기에서 싶지만,이 코드를 사용할 때 엑스 코드 내 사용자 정의 클래스 내 게터/세터 방법을 인식하지 않습니다

- (IBAction)setRingColor:(id)sender 
{ 
    if ([sender selectedSegmentIndex] == 0) 
    { 
     [self.view setCircleColor:[UIColor redColor]]; 
    } 
} 

어떻게 수를 이걸 내 사용자 정의 UIView에 전달 하시겠습니까?

답변

2

파생 형식으로 다운 캐스팅해야합니다.

[((HypnosisView *)self.view) setCircleColor:[UIColor redColor]]; 
+0

감사 좋은 대답 –

+2

또한, 너무 오래 뷰의 클래스는 항상 해당 컨트롤러의 모든 인스턴스에 대해 동일합니다, 당신은 필요로'view' 속성을 재정의하는 형 정제 범주를 작성하실 수 있습니다 더 구체적인 유형. 이것은 불쾌한 캐스팅을 돕습니다. –

관련 문제