import Foundation import UIKit import DataSource class TemplateViewController: UIViewController { // MARK: Interface var onSubmit: ((String) -> Void)! // ! für required closures, ? für wirklich optionale var onCancel: (() -> Void)! static func create(title: String, viewModel: TemplateViewModel) -> TemplateViewController { let viewController = TemplateViewController() viewController.viewModel = viewModel return viewController } // MARK: Views @IBOutlet private var titleLabel: UILabel! @IBOutlet private var profileImageView: UIImageView! private lazy var headerView = UIView().with { $0.backgroundColor = .red } // MARK: Private private var viewModel: TemplateViewModel! // computed properties usw. // MARK: Lifecycle override func viewDidLoad() { super.viewDidLoad() setupViews() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() } private func setupViews() { view.addSubview(headerView) // autolayout constraints } }