2012-07-20 3 views
0

커스텀 UIView를 만들고 이에 대한 대의원을 첨부했습니다 - 모든 것이 아름답게 작동합니다!배열의 객체에 델리게이트 첨부하기

그러나 이러한 UIView는 60 개의 루프로 배열로 만들어집니다. 그리고 나는이 아름다움 중 하나에 대리자를 연결하려고 할 때, 나는이 경고를 분석 얻을 :

을 'ID를 __strong'유형의 개체에없는 속성 '대표는'희망이 몇 가지 간단한 구문 문제는?

이 잘 작동 :

myUIView *aSimpleTest = [[myUIView alloc] init…]; 
aSimpleTest.delegate = self; //nice! 
... 

이되지 않습니다

for (i=0; i<60; i++){ 
    [arrayOfItems addObject:[[myUIView alloc] init…]; 
    [arrayOfItems objectAtIndex:i].delegate = self;//error, as above 
    ... 
} 

어떤 도움을 주셔서 감사합니다겠습니까. (다행스럽게도 필자는 새로운 무언가를 배우는 또 다른 하루를 보낼 필요가 없습니다!)

답변

3

이 시도 :

for (i=0; i<60; i++){ 
    myUIView *view = [[myUIView alloc] init…]; 
    view.delegate = self; 
    [arrayOfItems addObject:view]; 
    ... 
} 

편집 : 당신은 오류를 때문에 [arrayOfItems objectAtIndex:i] 반환 delegate 속성이 없습니다 id .

myUIView *view = (myUIView*)[arrayOfItems objectAtIndex:i]; 
view.delegate = self; 

나 : 당신은 또한 다음과 같은 할 수있는 루프에서

[[arrayOfItems objectAtIndex:i] setDelegate:self]; 
+0

첫 번째 해결 방법이 효과적이므로 마지막 문제도 해결되었습니다. 귀하의 도움에 대단히 감사 troolee! :) –

1

을 바로 수행

myUIView *tempView = (myUIView*)[arrayOfItems objectAtIndex:i]; 
tempView.delegate = self; 
+0

troolee의 제안은 훌륭했지만 어쨌든 감사합니다. –

1

사용 캐스트 :

((MyUIView*)[arrayOfItems objectAtIndex:i]).delegate = self; 

(한 가지를 주의 할 점 : 모자를 쓰고 클래스 이름을 항상 시작하십시오. 이탤릭체 문자.)

+0

troolee의 제안은 훌륭했지만 어쨌든 Amy에게 감사드립니다. –

관련 문제