将委托附加到数组中的对象
Posted
技术标签:
【中文标题】将委托附加到数组中的对象【英文标题】:Attaching a delegate to an object in an Array 【发布时间】:2012-07-20 15:32:37 【问题描述】:我创建了一个自定义 UIView,并为其附加了一个委托 - 一切都很好!
但是,这些 UIView 中有 60 个是在一个数组中循环创建的。 当我尝试将代理附加到这些美女之一时,我收到此分析警告:Property 'delegate' not found on object of type '__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
...
不胜感激。 (希望我不必再花一天时间学习新东西!)
【问题讨论】:
【参考方案1】:试试这个:
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];
【讨论】:
您的第一个解决方案有效,您的最后一个解决方案也有效。非常感谢您的帮助! :)【参考方案2】:在你的循环中做:
myUIView *tempView = (myUIView*)[arrayOfItems objectAtIndex:i];
tempView.delegate = self;
【讨论】:
troolee 的建议效果很好,但还是感谢 rooster117。【参考方案3】:使用演员表:
((MyUIView*)[arrayOfItems objectAtIndex:i]).delegate = self;
(需要注意的一点,顺便说一句:总是以大写字母开头你的类名。)
【讨论】:
以上是关于将委托附加到数组中的对象的主要内容,如果未能解决你的问题,请参考以下文章
Swift-使用委托将数据附加到 CollectionView 中的 TableView