请原谅,如果它的反复话题。将MVVM和MVC模式中的视图创建置于何处?
我平时写我的应用程序没有故事板,并把意见创建成“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不太熟悉,不确定会不会有一些问题。 它有多丑?
我认为这个实现是正确的,因为UI的任何更新都必须根据MVVM在View部分下完成。我猜想需要添加哪些视图的业务逻辑可以在View-Model –