是否可以使用 IBOutlet 数组之类的东西?
-
20-09-2019 - |
题
我当前的 iPhone 应用程序中有一个顶部列表视图,由代码填充。我已经使用 Interface Builder 组装了视图,因此它包含很多 UILabel
s。
显然我不想有 name1
, name2
, , ETC。我班上有插座,但更喜欢 name[10]
大批。
是否可以这样做,并将每个项目连接到适当的标签(或任何其他界面生成器,如视图)?
解决方案
你不能做到这一点在IB,但你可以创建一个在您init
方法的阵列和所有标签添加到它。
顺便说一句,可以设置一些标签的每个标签,并定义宏来访问它。不便等
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
其他提示
可以当然这样做与界面生成器,该关键字是IBOutletCollection
。它的作用主要是一个NSArray出多接口构建器出口。
IBOutletCollection(UILabel) NSArray *myLabels;
所以,接下来的事情是在Interface Builder连接您的标签,然后你可以使用数组在运行时可以访问所有的标签。
这可以通过出口集合来完成,请参阅此相关的问题。
按照以下步骤创建插座阵列并将其与 IB 元素连接(以下是示例 UIView
, , 您可以使用 UILabel
还):
- 创建 IBOutlet 数组
- 在 Storyboard ViewController 界面中添加多个 UIElements(视图)
- 选择ViewController(在故事板中)并打开连接检查器
- 连接检查器中有“插座集合”选项(您将在那里看到一系列插座)
- 将 if 与您的界面元素连接起来
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
不隶属于 StackOverflow