将委托附加到Array中的对象

时间:2012-07-20 15:32:37

标签: iphone ios cocoa-touch ios5

我创建了一个自定义的UIView,并附上了一个代表 - 一切都很美妙!

但是,这些UIView中的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 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

你的循环中的

就是这样做:

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

答案 2 :(得分:1)

使用演员:

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

(有一点需要注意,顺便说一下:总是以大写字母开始你的班级名称。)