addTarget

나이든별 / Oldstar·2022년 6월 27일
0

Think about Keywords

목록 보기
28/37

공부한 것

  • addTarget

고민한 점

  • 계산기 UI에 대해 이야기하던 중, 다이나믹한 UI의 활용을 위해 좋을 것 같다는 생각이 들어 공부하게 된 키워드.
  • 먼저 정의 부분을 뜯어보자.
func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControl.Event)
  • target 파라미터는, action 파라미터에서 명시된 메서드를 소유하고 있는 오브젝트이다.
    • 해당 부분이 nil이라면, responder chain을 타고 특정 동작 메시지에 응답하는 오브젝트를 찾은 후, 해당 오브젝트에게 그 동작 메시지를 배달한다.
    • 아무도 응답하지 않는다면 AppDelegate에까지 전달될 수 있구나~
  • action 파라미터는, 특정 동작에 반응해 수행할 동작을 메서드로 정의해 넣어 주는 것이다.
    • 필수적으로 채워넣어야 하는 파라미터이다.
    • swift상에서의 메서드를 쓰고자 하는 경우 #selector [메서드]의 형식으로 입력하며, 들어가는 메서드는 @objc 접두어를 통해 Objective-C와의 호환성을 담보해야 한다.
    • 하술하는 경우에 해당하는 동작에 반응할 수 있다.
@IBAction func doSomething()
@IBAction func doSomething(sender: UIButton)
@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
  • controlEvents 파라미터는, 상술한 경우에 해당하는 바로 그 동작이다.
  • 그러니까, controlEvents 이벤트와 action 메서드를 이어 주는 메서드다! 라고 가볍게 요약할 수 있는 것이다.
  • 여러 번 사용할 수도 있다. 단, 동작 하나당 한 번만 추가해줘야 한다!
  • addTarget 메서드는 말하자면, 특정 동작과 특정 메서드를 이어주는 길을 뚫는 것이다. 두 지점 간을 잇는 길을 굳이 여러 개 뚫을 필요는 없겠지?
  • 이를테면, 숫자 버튼을 눌렀을 때 내부적으로 관리하는 스트링에 해당 숫자를 뒤에 더해주세요~ 하는 동작은, 한 번만 추가해주면 그 다음부터 잘 작동한다는 것이다.
  • 동적인 UI 만들기를 위해 매우 쓸 만 한 도구로 보인다!!
  • 자세한 내용은 야곰의 오토 레이아웃 강의를 참조하자.

참조

https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

profile
함께 나아가고자 하는 사람

0개의 댓글