본문 바로가기
공부/Swift, algorithm

[Swift] #Selector()

by 마자용 2022. 4. 19.

개념

- 메서드를 식별할 수 있는 고유의 이름을 말한다.
- 구조체 struct 타입이며, 컴파일 시간에 지정된다.
- UIKit 내부의 Objective-C 런타임으로 실행되는 메서드에서는 #Selector()를 파라미터로 전달 받는데, 이 때 (= 이 전달에) 필요한 인스턴스의 타입을 말한다.
- 함수 표기형 방식 (= 인자 레이블을 콜론(:)으로 구분하여 나열함) 으로 전달된다.
  (일급 객체인 함수를 매개변수로 전달하기 때문 ...! )

 

사용 예시

  • UI 요소에 Action 관련 @objc 함수를 Target으로 추가해줄 때 → #Selector() 타입 안에다가 넣어준다.

 

코드 예시

override func setTargets() {
        super.setTargets()
        
        [signInView.signUpButton, signInView.idTextField, signInView.passwordTextField].forEach {
            $0.addTarget(self, action: #selector(textFieldDidChanged(_:)), for: .editingChanged)
        }
    }
    
    @objc
    private func textFieldDidChanged(_ textField: UITextField) {
        signInView.signInButton.isEnabled = [signInView.idTextField, signInView.passwordTextField].allSatisfy { $0.hasText }
        if signInView.signInButton.isEnabled {
            signInView.signInButton.backgroundColor = UIColor.systemBlue
        } else {
            signInView.signInButton.backgroundColor = Const.Color.blue
        }
    }

 

 

댓글