如何为我的所有IBOutlets添加make数组



这些是我的奥特莱斯,我如何在数组中去掉所有这些

@IBOutlet weak var progressBar1: UIProgressView!
@IBOutlet weak var progressBar2: UIProgressView!
@IBOutlet weak var progressBar3: UIProgressView!
@IBOutlet weak var progressBar4: UIProgressView!

打开助手编辑器,右键单击并从UIProgressView的其中一个拖动,或者只从其"拖动;引用出口集合";到代码文件。插入出口收集

然后,您可以从swift文件的@IBOutlet拖动到UIProgressView的其余部分。将视图添加到集合

在顶部首先声明一个变量,如

var outlets: [UIProgressView] = []

现在,在ViewDidLoad方法中,您可以使用它将所有出口放置在该阵列上

像这样:

outlets = [progressBar1, progressBar2, progressBar3, progressBar4]

希望你能理解。

class ViewController: UIViewController {
@IBOutlet weak var p1: UIProgressView!
@IBOutlet weak var p2: UIProgressView!
@IBOutlet weak var p3: UIProgressView!
@IBOutlet weak var p4: UIProgressView!

var outlets: [UIProgressView] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
outlets = [
p1,p2,p3,p4
]
}
}

如果你有其他类型的视图,你可以使用

var outlets: [UIView] = [...]

正如这里提到的Swift-IBOutletCollection等价物,您可以使用IBOutletCollection来实现这一点。您可以将所有视图拖动到一个IBOutlet数组中。

@IBOutlet weak var progressBars: [UIProgressView]!

例如,您可以访问类似的第一个进度条

progressBars[0]

但您必须小心progressBars的顺序,当您定义IBOutletCollections时,该集合将不会得到顺序保证。您可以为每个视图定义,并在运行时按其标记进行排序,如这里所述。IBOutletCollection是否保证顺序正确?

通过等标签订购所有视图

progressBars = progressBars.sorted { $0.tag < $1.tag }

最新更新