在Interface Builder中,是否可以重用IBOutlet按钮属性?

时间:2012-08-17 23:16:32

标签: ios interface-builder

我有一组20个相同的按钮,它们都链接到同一个动作。唯一不同的是他们的标签。但是我发现不可能将它们全部链接到同一个IBOutlet @property。我是否真的必须为这20个相同的按钮中的每一个创建20个IBOutlet @properties?

否则我收到this class is not key value coding-compliant for the key btn_chooseMark.错误,应用程序崩溃了。

3 个答案:

答案 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对象指针是一对一的。