일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- api 요청 수 제한
- 프로그래머스
- 딥다이브
- 모던 자바스크립트
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- bucket4j
- oauth
- concurrency limit
- 자바스크립트
- Dev-Matching
- 파일 url
- 프론트엔드
- AWS
- NestJS
- this
- 우아한테크코스
- 프리코스
- compateto
- 음악 url 파일 다운로드
- 유효시간 설정 url
- TypeORM
- invalid_grant
- 타입스크립트
- redis
- 검색
- 우아한 테크코스
- 프론트엔드 과제
- Deep Dive
- api 비동기처리
- 스프링부트
- Today
- Total
개발 알다가도 모르겠네요
Delegate를 간단하게 알아보자. 본문
Delegate란 어떤 객체에서 일어나는 모든 일을 하나의 객체가 처리하지 않고 일부를 다른 객체에게 위임해 처리하는 것
UITextFieldDelegate를 예로 들겠습니다.
class StudyViewController: UIViewController , UITextFieldDelegate {
@IBOutlet weak var writingTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
writingTextField.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
writingTextField.endEditing(true)
print(searchTextField.text!)
return true
}
}
여기 StudyViewController가 있습니다. 우리는 textfield의 작성이 끝나면 키보드를 내리고 출력하는 것을 구현하려 합니다.
이때 우리는 delegate를 사용해야 합니다.
그 이유는 애플에서 만든 UITextField 클래스에는 우리가 만든 StudyViewController 내부에 대한 정보가 전혀 없기 때문입니다.
그야 당연합니다! 애플이 우리가 만든 StudyViewController라는 클래스를 예측하고, '키보드를 내리고 입력 내용을 출력하라는 메서드'를 미리 만들었을 리는 없으니까요.
let writingVC = WritingViewController()
writingVC.textFieldShouldReturn(. //. // ) 이런 게 선언되어 있을 리가 없죠ㅎㅎ
따라서 우리는 UITextFieldDelegate를 사용하려고 합니다.
writeTextField.delegate = self
self (WritingViewController)가 textfield의 위임자가 되었습니다.
UITextField 내부에는
var delegate: UITextFieldDelegate()
delegate.textFieldShouldReturn(. //. // )
이런 게 있겠죠. 이젠 아까와 달리 WritingViewController(위임자)에 대한 정보가 생겼습니다.
현재
Sender : 일을 시키는 객체 - textfield
Reciever: 일을 하는 객체 - vewcontroller
protocol: 해야 할 일의 목록 - UITextFieldDelegate 이렇게 되겠죠.
이제 textfield 대신에 viewcontroller가 일을 대신하게 됩니다.
이벤트가 생기면 viewcontroller는 프로토콜에 따라 textfield에게 응답을 주게 됩니다.
참고로 delegate는 프로토콜 타입입니다.
그리고 UITextFieldDelegate에는 텍스트 필드에서 유저가 리턴키를 눌렀는지 판별하는 textFieldShouldReturn라는 메서드를 이용해
'키보드를 내리고 입력 내용을 출력하라는 메서드'를 구현했습니다.
'모바일 > Swift' 카테고리의 다른 글
URLSession을 간단하게 알아보자. (0) | 2021.01.30 |
---|---|
DispatchQueue를 간단하게 알아보자. (0) | 2021.01.30 |
클로저와 옵셔널을 간단하게 알아보자. (0) | 2021.01.30 |
상속을 하는 경우를 간단하게 알아보자. (0) | 2021.01.30 |
클래스와 구조체의 차이를 간단하게 알아보자. (0) | 2021.01.30 |