簡體   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