ios - 我可以将具有不同标签的多个对象连接到同一个 IBOutlet 吗?

标签 ios objective-c xcode iboutlet iboutletcollection

我在 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/

相关文章:

Iphone 将 URL 加载到变量 - 静态有效,来自 XML 的动态失败

ios - 在 OpenGL ES 中使用 CVOpenGLESTextureCache 将纹理传递给 Uniform

javascript - 如何防止钛合金 View 中的事件冒泡?

iphone - 防止 UITableViewCell 的 UIImageView 调整异步加载的 UIImage 的大小

ios - UINavigationBar 的自定义样式无法正常工作

ios - .xcdatamodeld 文件未在 Xcode 中显示数据模型结构

html - CSS3 下拉菜单链接在 iOS 中不起作用

ios - 无法对 SKPhysicsbody 施加脉冲

ios - 无法播放系统声音 iOS 7

objective-c - 同时使用 AVCaptureSession 和 Playback Audio 录制音频/视频?