Swift TIL(70)

웰디(Well-D)·2023년 11월 5일
0

Sweet & Soft, SWIFT

목록 보기
70/76

포항항 알고리즘 스터디 시작한 날
한 줄 서기 문제를 골랐다 (!)

기본 앱의 MVC 로의 model 과 view, controller 분리 리팩토링, loginView (코드로 UI 구현시) 의 MVC 구현을 위한 view 와 controller 분리 리팩토링

코드로 UI를 짤때 반드시 MVC 구현을 해야하는 건 아님!

오늘의 포인트

코드로 UI 작성 시 주의점

// 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)
        
    }     
   

왜 addTarget 함수는 UIView 상속 클래스가 아닌 UIViewController상속클래스에서 구현할까?

1) 다음화면으로 넘어가는 메서드를 사용하기 위해서는 present 메서드등 필요

2) 해당 메서드들은 viewController 객체안에서만 구현가능

3) 따라서 present를 호출하는 loginButtonTapped 매서드 는 반드시 viewController 안에 구현이 되어 있어야함

4) 그럼 그 loginButtonTapped를 부르는 addTarget메서드는 반드시 viewController안에 구현이 되어 있어야함

⇒ UIView 를 상속받는 view 쪽이 아닌 controller 쪽에서 구현해줘야만하는 이유임
=> 즉 해당 present 등의 메서드를 사용하는 코드는 무조건 viewController 즉 view 쪽이 아닌 컨트롤러 쪽에 위치를 시켜야한다!
(코드로 UI를 구현시 주의점)

profile
Wellness 잘사는 것에 진심인 웰디입니다. 여러분의 몸과 마음, 통장의 건강을 수호하고싶어요. 느리더라도, 꾸준히

0개의 댓글