0

我创建了一个自定义 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
    ...
}

将不胜感激一些帮助。(希望我不必再花一天时间学习新东西!)

4

3 回答 3

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];
于 2012-07-20T15:36:55.617 回答
1

在你的循环中做:

myUIView *tempView = (myUIView*)[arrayOfItems objectAtIndex:i];
tempView.delegate = self;
于 2012-07-20T15:37:52.013 回答
1

使用演员表:

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

(有一点要注意,顺便说一句:总是以大写字母开头你的类名。)

于 2012-07-20T15:38:19.067 回答