Model: 비즈니스 로직, 데이터
View: UI 화면
Controller: 뷰 컨트롤러, Model과 View 사이의 중재자 역할을 한다.
이때 특정 객체의 동작으로 다른 뷰를 present 하는 등의 처리를 할 때, 해당 코드는 ViewController에서 이루어져야 한다.
UIView 클래스에서 생성자 재정의가 필요하다.
override init(frame: CGRect) {
super.init(frame: frame)
...
}
required init?(coder: NSCoder) {
fataError("init(coder:) has not been implemented")
}
ViewController에서 loadView() 재정의를 통해 기본 뷰(view)를 대체하는 코드가 필요하다.
private let myView = MyView()
//viewDidLoad()보다 먼저 실행되는 메서드
override func loadView() {
view = myView
}