請原諒,如果它的反覆話題。將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 –