[英]how to insert iboutlets into a array (swift3)
我正在尝试将多个iboutets分组为一个数组。 如果可以分组,这将使我的编码工作流程更快。 我试图编码我的想法,但是它不起作用。 我想做的事情围绕着让c =部分。 代码如下。
import UIKit
class ViewController: UIViewController {
let c = {
@IBOutlet var a: UIButton!
@IBOutlet var b: UIButton!
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func turnOff(_ sender: Any) {
c.isHidden = true
}}
根据您的需求,我看到三个选项:
1.出口集合
如果您使用接口构建器,请在拖出插座时查找“插座收集”选项。
这是手动创建插座集合的语法:
@IBOutlet var buttons: [UIButton]!
现在,您可以将多个按钮连接到集合。 缺点是您不再可以通过此插座简单地访问各个按钮。
2.计算财产
如果您想保留各个出口以便于访问,我可能会创建一个返回集合的计算属性:
@IBOutlet var a: UIButton!
@IBOutlet var b: UIButton!
var buttons: [UIButton] {
return [a, b]
}
3.查看层次结构
根据您的布局需求,您可以将所有按钮置于一个公共的父视图中。 现在,只需隐藏/取消隐藏父视图。
扩展选项1和2的集合
您不能在按钮集合上使用isHidden
的原因是,数组没有isHidden
属性。 您将必须遍历数组(Tom Harrington在注释中指出了这一点)。 如果您需要做很多事情,则可以通过添加转发到数组元素的isHidden
属性的方法来扩展按钮数组。 这是一个示例,用于扩展约束到UIView
元素(包括按钮数组)的更通用的Sequence
类型:
extension Sequence where Iterator.Element == UIView {
func setHidden(_ hidden: Bool) {
for view in self {
view.isHidden = hidden
}
}
}
buttons.setHidden(true)
将按钮放入Stack View
。
从该Stack View
拖动插座。
最后,您将能够在该Stack View
上使用isHidden
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.