我有一组20个相同的按钮,它们都链接到同一个动作。唯一不同的是他们的标签。但是我发现不可能将它们全部链接到同一个IBOutlet @property。我是否真的必须为这20个相同的按钮中的每一个创建20个IBOutlet @properties?
否则我收到this class is not key value coding-compliant for the key btn_chooseMark.
错误,应用程序崩溃了。
答案 0 :(得分:1)
你根本不需要任何插座。将所有20个放在具有单个标签的视图中。当您需要访问一个时,请使用
UIButton *button = [self.view viewWithTag:x];
你显然可以把它放在'for'循环中。此外,对所有20个使用一个动作项是完全正常的,也是常见的ObjectiveC练习。
答案 1 :(得分:1)
如果您需要操纵IBAction外部的按钮,请创建一个IBOutletCollection,如下所示:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *myButtons;
您可以像这样访问按钮:
for (UIButton *button in myButtons){
if (button.tag == 2) {
[button setAlpha:1];
}
}
做你想做的事。否则,如果您想在IBAction中操作它们,请将发件人从“id”更改为“UIButton *”。 (你可能已经知道了,但嘿,为什么不彻底?)
答案 2 :(得分:0)
听起来像你想要一个IBOutletConnection。将所有按钮连接到同一个插座是没有意义的。每个对象都应该是它自己的指针,关系UI对象指针是一对一的。