是否可以使用类似IBOutlet数组的东西?

时间:2009-12-17 09:29:26

标签: iphone uilabel interface-builder iboutlet iboutletcollection

我在当前的iPhone应用程序中有一个顶级列表视图,它由代码填充。我使用Interface Builder组装了视图,因此它包含很多UILabel s。

显然,我不希望在班上有name1name2等出口,但更喜欢name[10]数组。

是否可以这样做,并将每个项目连接到相应的标签(或任何其他界面构建器,如视图)?

4 个答案:

答案 0 :(得分:22)

您当然可以使用界面构建器执行此操作,关键字为IBOutletCollection。它的作用基本上是多个界面构建器出口的NSArray。

IBOutletCollection(UILabel) NSArray *myLabels;

接下来就是在界面构建器中连接标签,然后您可以使用该数组在运行时访问所有标签。

答案 1 :(得分:0)

您无法在IB中执行此操作,但您可以在init方法中创建一个数组并添加所有标签。

顺便说一下,你可以为每个标签设置一些标签,并定义宏来访问它。喜欢

#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]

答案 2 :(得分:0)

这可以使用outlet集合完成,请参阅this related question

答案 3 :(得分:0)

按照以下步骤创建一个插座阵列,并将其与IB Elements连接(以下是UIView的示例,您也可以使用UILabel):

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

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


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

enter image description here