我可以使用不同标签将多个对象连接到同一个IBOutlet吗?

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

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

我该怎么做呢?

使用IBOutletCollection将视图控制器添加到视图控制器,如下所示:

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

这将让你连接所有的button到一个sockets。 属性buttons将是一个包含所有button的NSMutableSet。 您可以继续使用button的tag属性来识别各个button。 如果要遍历所有button,可能要设置每个button的图像,这是很方便的:

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

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

当然,如果您已经知道所有button的标签值的范围,并且您已经注意到在包含所有button的视图中使标签独一无二,您也可以使用-viewWithTag:单独获取每个button。 这可能不像已经创build的整套button那么快,就像上面介绍的outlet集合一样,但是这意味着还有一件事要维护。

按照以下步骤创build一个连接IB元素的socketsarrays:

  • 创build一个IBOutlets数组
  • 在Storyboard ViewController界面中添加多个UIElements(Views)
  • selectViewController(在故事板)并打开连接检查器
  • 在连接检查员有选项“出口收集”(你会看到一系列的网点)
  • 连接,如果你的界面元素

 class ViewController2: UIViewController { @IBOutlet var collection:[UIView]! override func viewDidLoad() { super.viewDidLoad() } } 

在这里输入图像说明