2012-07-20 55 views
0

我已經創建了一個自定義的UIView,並連接一個委託給它 - 這一切精美的作品!附加委託給一個對象數組

然而,這些UIViews 60在陣列中被創建,在一個循環中。 當我嘗試將委派附加到這些美女之一,我得到這樣的分析警告:屬性「代理」的類型的對象__strong ID「

沒有找到希望這是一些簡單的語法問題?

這個偉大的工程:

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]回報id不具有delegate財產。你也可以做到以下幾點:

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

或:

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

你的第一個解決方案工作,所以沒有你的最後一個。非常感謝您的幫助! :) – 2012-07-20 15:43:56

1
在循環

只是做:

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

特魯利的建議工作得很好,但無論如何rooster117。 – 2012-07-20 15:45:17

1

使用強制:

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

(一件事注意一下:總是用帽子開始你的班級名稱ITAL字母。)

+0

troolee的建議偉大的工作,但還是謝謝你艾米。 – 2012-07-20 15:45:25