1

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

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

4

3 回答 3

1

你根本不需要任何插座。使用单独的标签将所有 20 个放在视图中。当您需要访问一个时,请使用

UIButton *button = [self.view viewWithTag:x];

你显然可以把它放在一个'for'循环中。此外,对所有 20 个操作项使用一个操作项是完全正常的,也是一种常见的 ObjectiveC 实践。

于 2012-08-17T23:34:25.370 回答
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 *”。(你可能已经知道了,但是,嘿,为什么不彻底呢?)

于 2012-08-17T23:36:41.300 回答
0

听起来你想要一个IBOutletConnection。将所有按钮连接到同一个插座是没有意义的。每个对象都应该有自己的指针,并且 UI 对象指针的关系是一对一的。

于 2012-08-17T23:22:49.470 回答