포항항 알고리즘 스터디 시작한 날
한 줄 서기 문제를 골랐다 (!)
기본 앱의 MVC 로의 model 과 view, controller 분리 리팩토링, loginView (코드로 UI 구현시) 의 MVC 구현을 위한 view 와 controller 분리 리팩토링
코드로 UI를 짤때 반드시 MVC 구현을 해야하는 건 아님!
// viewController 내의 코드
// LoginView 인스턴스(객체) 생성
private let loginView = LoginView()
// 뷰 교체 시 사용하는 메서드 loadView
override func loadView() {
view = loginView
}
override func viewDidLoad() {
super.viewDidLoad()
setupAddTarget()
}
func setupAddTarget() {
loginView.loginButton.addTarget(self, action: #selector(loginButtonTapped), for: .touchUpInside)
loginView.passwordResetButton.addTarget(self, action: #selector(resetButtonTapped), for: .touchUpInside)
}
// MARK: - 로그인 버튼 메서드
// 로그인 버튼이 눌렸을때의 메서드
@objc func loginButtonTapped() {
print("로그인 버튼이 눌렸습니다")
// 반드시 present 메서드를 사용하기 위해서는
viewController 객체안에 해당 loginButtonTapped 매서드가 구현이 되어 있어야함
let vc = secondViewcontroller()
present.(vc, animated: true)
}
1) 다음화면으로 넘어가는 메서드를 사용하기 위해서는 present 메서드등 필요
2) 해당 메서드들은 viewController 객체안에서만 구현가능
3) 따라서 present를 호출하는 loginButtonTapped 매서드 는 반드시 viewController 안에 구현이 되어 있어야함
4) 그럼 그 loginButtonTapped를 부르는 addTarget메서드는 반드시 viewController안에 구현이 되어 있어야함
⇒ UIView 를 상속받는 view 쪽이 아닌 controller 쪽에서 구현해줘야만하는 이유임
=> 즉 해당 present 등의 메서드를 사용하는 코드는 무조건 viewController 즉 view 쪽이 아닌 컨트롤러 쪽에 위치를 시켜야한다!
(코드로 UI를 구현시 주의점)