我创建了一个自定义的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
...
}
会感激一些帮助。 (希望我不必再花一天时间学习新东西!)
答案 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;
(有一点需要注意,顺便说一下:总是以大写字母开始你的班级名称。)