Target-Action

이하연·2021년 9월 16일
0

Boostcourse

목록 보기
15/20

Target-Action

Target-Action 디자인 패턴에서는 이벤트가 발생하면 그 이벤트를 받은 객체가 다른 객체에게 메세지를 전달할 때 필요한 정보를 포함합니다.

Target - 호출될 객체 / 프레임워크 객체를 포함한 모든 객체가 될 수 있으나 보통 컨트롤러가 일반적

Action - 특정 이벤트가 발생했을 때 호출할 메서드

Action message - 이벤트 발생 시 전송된 메시지

액션 메서드

액션 메서드는 특정한 양식이 필요하는데 , IBAction은 인터페이스 빌더가 메서드를 인지할 수 있도록 해줍니다.

스위프트 언어를 활용한 프로그래밍 방식에 @objc은 swift 클래스를 사용하는 Objective-C 코드가 있거나 Objective-C 유형의 메서드를 사용하는 경우 필요합니다.

(아직 애플의 프레임워크는 Objective-C 언어로 작성된 코드가 많기 때문에, 스위프트 언어로 작성한 코드에서는 Objective-C코드와 호환하기 위해서 @objc 표시해줘야 합니다. )

컨트롤 이벤트

UIKit에는 UIButton, UISwitch, UIStepper 등 UIControl를 상속받은 다양한 컨트롤 클래스가 있습니다.

컨트롤 객체에 발생한 다양한 이벤트 종류를 특정 액션 메서드에 연결할 수 있습니다.

즉 컨트롤 객체에서 특정 이벤트가 발생하면, 미리 지정해 둔 타겟의 액션을 호출하게 됩니다.

  • 컨트롤 이벤트의 종류

    컨트롤 이벤트는 UIControlEvents라는 타입으로 정의되어 있습니다. 아래는 컨트롤 객체에 발생할 수 있는 이벤트의 종류입니다.

    • touchDown
      • 컨트롤을 터치했을 때 발생하는 이벤트
      • UIControlEvents.touchDown
    • touchDownRepeat
      • 컨트롤을 연속 터치 할 때 발생하는 이벤트
      • UIControlEvents.touchDownRepeat
    • touchDragInside
      • 컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생하는 이벤트
      • UIControlEvents.touchDragInside
    • touchDragOutside
      • 터치 영역이 컨트롤의 바깥쪽에서 드래그 할 때 발생하는 이벤트
      • UIControlEvents.touchDragOutside
    • touchDragEnter
      • 터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔다가 다시 들어왔을 때 발생하는 이벤트
      • UIControlEvents.touchDragEnter
    • touchDragExit
      • 터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔을 때 발생하는 이벤트
      • UIControlEvents.touchDragExit
    • touchUpInside
      • 컨트롤 영역 안쪽에서 터치 후 뗐을때 발생하는 이벤트
      • UIControlEvents.touchUpInside
    • touchUpOutside
      • 컨트롤 영역 안쪽에서 터치 후 컨트롤 밖에서 뗐을때 이벤트
      • UIControlEvents.touchUpOutside

shift + command + O → 원하는 곳으로 이동?


실습

target - self / action - 데이터피커의 값이 바뀌었을때

dateFormatter 사용하여 데이터피커의 값이 label에 찍히게 만들기

시간도 출력하고 싶으면 formatter.timeStyle = .medium

만약 미리 지정된 스타일이 아닌 내가 원하는 형태로 출력하고 싶을 경우에는 Dateformatter를 사용하면 된다 → formatter.dateFormat = "yyyy/MM/dd hh:mm:ss"

0개의 댓글