[英]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.