我有一个带有一堆按钮的UIView(类似200个)......
视图已在IB中设置,因此我必须使用单个处理程序手动连接每个按钮...
我正在尝试遍历视图的子视图,查找按钮然后以编程方式设置按钮的目标...这会导致崩溃(我收到编译警告«UIButton可能无法响应addTarget ...» )。
这是循环:
for(UIButton *aButton in self.view.subviews){
if([aButton isKindOfClass:[UIButton class]]){
[aButton addTarget:self selector:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
}
}
我可以访问按钮的某些属性,例如可见性和标题......但不是动作?
任何帮助都非常感谢......!
答案 0 :(得分:5)
for(UIButton *aButton in self.view.subviews){
if([aButton isKindOfClass:[UIButton class]]){
[aButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
}
}
你能发现差异吗? ;)
答案 1 :(得分:0)
您可以使用respondsTo
或其他变体来避免错误。这样可以确保您可以为aButton
设置操作。
但是,如果你正在循环遍历所有这些按钮,为什么不以编程方式构建它们呢?他们的设计很重吗?
答案 2 :(得分:0)
你应该将答案标记为正确。
但以防其他人来:
应该是:
addTarget:self action :@ selector(buttonClick:)
而不是:
addTarget:self selector :@ selector(buttonClick:)