我当前的 iPhone 应用程序中有一个顶部列表视图,它由代码填充。我已经使用 Interface Builder 组装了视图,因此它包含很多UILabel
s。
显然,我不希望在我的班级中有name1
,name2
等插座,但更喜欢name[10]
数组。
是否可以这样做,并将每个项目连接到适当的标签(或任何其他界面构建器,如视图)?
我当前的 iPhone 应用程序中有一个顶部列表视图,它由代码填充。我已经使用 Interface Builder 组装了视图,因此它包含很多UILabel
s。
显然,我不希望在我的班级中有name1
,name2
等插座,但更喜欢name[10]
数组。
是否可以这样做,并将每个项目连接到适当的标签(或任何其他界面构建器,如视图)?
您当然可以使用界面生成器来执行此操作,关键字是IBOutletCollection
. 它所做的基本上是多个接口构建器出口中的一个 NSArray。
IBOutletCollection(UILabel) NSArray *myLabels;
所以接下来的事情就是在界面生成器中连接你的标签,然后你可以使用数组在运行时访问所有标签。
按照以下步骤创建一个插座阵列并将其与 IB Elements 连接(这里是 的示例UIView
,您也可以使用UILabel
):
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
您不能在 IB 中执行此操作,但您可以在init
方法中创建一个数组并将所有标签添加到其中。
顺便说一句,您可以为每个标签设置一些标签并定义宏来访问它。喜欢
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
这可以使用插座集合来完成,请参阅此相关问题。