それは簡単です上の任意の明確化を感謝しています。
はUIViewController
で直接あなたのUI要素を初期化します。例えば
:
private let yourLabel: UILabel = {
let label = UILabel()
label.text = "Text"
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
}
private func setupViews() {
view.addSubview(yourLabel)
// Setup constraints for yourLabel
}
次にコントローラコードでyourLabel
どこにアクセスします。これはすべてのUIコンポーネントで機能します。
注記!
あなたは、セットアップのすべてのビューではないコントローラではなく、別のビューにすることができます。そして、コントローラに1つのビュー(他のサブビューを含む)を追加します。この1つのビューを使用してすべてのサブビューにアクセスできます。しかし、あなたは別のビューでUIコンポーネントを作成する方法方法は同じになります:カスタムの
let yourSubView: UILabel = { // any UI component
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
例UIView
を分離:
class CustomView: UIView { // Separate view. Doesn't make the controller massive
let yourSubView: UILabel = { // any UI component
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public func setupViews() {
addSubview(yourSubView)
// Setup yourSubView constraints
}
}
次にあなたがUIViewController
にCustomView
を追加し、すべてのサブビューにアクセスすることができますCustomView
である。
クラスのプロパティを宣言し、それらのプロパティで作成したビューへの参照を格納する必要があります。 – Paulw11
ビューファイルで、クラスレベルでUIを宣言してからアクセスできますが、実際のビューをビューファイル内の関数? – jackdm
はい、オブジェクトの他のプロパティと同様です。あなたは '@ IBOutlet'ビットを省略することができることを除けば、あなたは' @ IBOutlet'と同じように、 – Paulw11