Взаимодействия между представлениями обычно представляют собой исполняемые объекты, которые имеют зависимость от другого представления, но скрывают эту зависимость.

уйста, извините, если его повторная тема.

Я обычно пишу свои приложения без раскадровок и помещаю создание представлений в viewDidLoad, например:

class LoginVC: UIViewController {

    var view1: UIView!
    var label1: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        loadStaticViews()
    }

    func loadStaticViews() {
        view1 = UIView()
        label1 = UILabel()
        view.addSubview(view1)
        view1.addSubview(label1)
        // constraints...
    }
}

И теперь я хочу попробовать шаблон MVVM в моем следующем приложении, и просто не знаю, куда поместить создание представлений. Теперь я думаю о чем-то таком:

class LoginVCViews {
    static func loadViews<T, T1, T2>(superview: UnsafeMutablePointer<T>, view: UnsafeMutablePointer<T1>, label: UnsafeMutablePointer<T2>) {
        guard let superview = superview.pointee as? UIView else { return }
        let v = UIView()
        let l = UILabel()
        superview.addSubview(v)
        v.addSubview(l)

        // constraints...

        view.pointee = v as! T1
        label.pointee = l as! T2
    }
}

class LoginVC: UIViewController {

    private var view1: UIView!
    private var label1: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        LoginVCViews.loadViews(superview: &view, view: &view1, label: &label1)
    }
}

Как вы думаете ? Я не очень хорошо знаком с UnsafeMutablePointer и не уверен, что проблем не будет. И сколько это некрасиво?

Ответы на вопрос(1)

Ваш ответ на вопрос