我在 Interface Builder 的一个 View 中有 30 个按钮。每个都有一个介于 100001 和 100030 之间的不同标签。我发现对每个按钮使用相同的操作很容易,在按下时为每个按钮传递标签并使用代码来决定加载哪个级别。
我想将所有按钮连接到一个 IBOutlet,但让每个按钮根据用户保存的数据和按钮的标签加载不同的图像。
我该怎么做?
最佳答案
使用 IBOutletCollection 将 socket 集合添加到您的 View Controller ,如下所示:
@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* buttons;
这样您就可以将所有按钮连接到一个 socket 。属性 buttons
将是一个包含所有按钮的 NSMutableSet。您可以继续使用按钮的 tag
属性来识别各个按钮。如果您想遍历所有按钮,这很方便,也许要设置每个按钮的图像:
for (UIButton *b in self.buttons) {
b.imageView.image = [self imageForTag:b.tag];
}
(您需要提供 -imageForTag:
方法来为给定标签提供正确的图像,或者寻找其他方法将标签映射到图像。)
当然,如果您已经知道所有按钮的标签值范围,并且您已经注意使标签在包含所有按钮的 View 中唯一,您也可以使用 -viewWithTag:
。这可能不如创建整套按钮快,就像您创建上述导出集合一样,但这确实意味着少了一件需要维护的事情。
关于ios - 我可以将具有不同标签的多个对象连接到同一个 IBOutlet 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564249/