繁体   English   中英

如何将iboutlet插入数组(swift3)

[英]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)
  1. 将按钮放入Stack View

  2. 从该Stack View拖动插座。

  3. 最后,您将能够在该Stack View上使用isHidden属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM