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