8

我在 Interface Builder 的一个视图中有 30 个按钮。每个在 100001 和 100030 之间都有一个不同的标签。我发现对每个按钮使用相同的操作很容易,按下时传递每个按钮的标签并使用代码来决定加载哪个级别。

我想将所有按钮连接到一个 IBOutlet,但让每个按钮根据用户保存的数据和按钮的标签加载不同的图像。

我该怎么做呢?

4

2 回答 2

25

使用 IBOutletCollection 将插座集合添加到您的视图控制器,如下所示:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* buttons;

这将使您可以将所有按钮连接到一个插座。该属性buttons将是一个包含所有按钮的 NSMutableSet。您可以继续使用按钮的tag属性来识别单个按钮。如果您想遍历所有按钮,这很方便,也许是为了设置每个按钮的图像:

for (UIButton *b in self.buttons) {
    b.imageView.image = [self imageForTag:b.tag];
}

(您需要-imageForTag:提供为给定标签提供正确图像的方法,或者找到其他方法将标签映射到图像。)

当然,如果您已经知道所有按钮的标签值范围,并且已经注意使标签在包含所有按钮的视图中唯一,那么您也可以使用-viewWithTag:. 这可能没有像上面描述的插座集合那样已经创建整套按钮那么快,但这确实意味着需要维护的东西更少。

于 2011-12-19T16:39:32.727 回答
1

按照以下步骤创建一个插座阵列并将其与 IB Elements 连接:

  • 创建一个 IBOutlets 数组
  • 在 Storyboard ViewController 界面中添加多个 UIElement(视图)
  • 选择 ViewController(在故事板中)并打开连接检查器
  • 连接检查器中有“Outlet Collections”选项(您将在那里看到一系列插座)
  • 与您的界面元素连接

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

在此处输入图像描述

于 2017-10-18T14:06:28.190 回答