PickerView
몇 개의 휠을 보여줄 거니?
-> 2개의 휠을 보여주겠다.
하나의 휠에 몇 개의 row를 보여줄 거니?
-> 첫 번째 휠이라면 10개의 row를, 두 번째 휠이라면 20개의 row를 보여줄 것이다.
전체적으로 보자면 이렇다.
그리고 꼭 델리게이트 위임처리를 해줘야 한다.
UIPickerViewDelegate, DataSource는 부분은 아래처럼 써줄 수 있다.
세 번째 didSelectRow는 선택되면 어떤 동작을 할 건데?
-> textField에 값을 줄게!
보통 이렇게 구현을 하고, 나의 경우는 같은 파일에서 하단에 extension을 통해서 코드를 분리해주는데
extension 파일을 분리해서 만드는 것도 가능한데, 현업에서 많이 보이는 코드 스타일은 하단에 배치해주는 경우가 많다고 한다.
그리고 PickerView를 사용할 때 종종 텍스트필드에 값을 넣어주는 경우가 있다.
그럴 경우, 텍스트필드의 특성상 키보드가 같이 올라오는데 이 문제를 해결해주기 위해서 사용하는 방법이
텍스트필드의 inputView에 pickerView를 주는 것이다.
이 InputView는 시스템에서 제공하는 키보드를 대체하기 위해 제공하는 걸로 텍스트필드와 텍스트뷰에만 존재한다.
이 경우에는 스토리보드로는 구현이 불가능하고, 코드로만 가능하다는 점!
근데 그 경우에 텍스트필드에 복붙 기능이 가능해버린다. 그래서 그 기능을 막아버려야 하는데
How?
1. CustomTextField 클래스를 만들고 canPerformAction 메소드를 적용한다.
이때 코드도 바꾸고 아웃렛에서도 바꾸는 거 잊지말자!
2. UITextFieldDelegate의 메소드에서 커서가 깜빡일 때 터치를 막고, 커서가 사라질 때 터치를 준다.
델리게이트 위임처리 잊지 말자!
그러면 저 InputView를 통해 올라온 피커뷰는 어떻게 내리지?
1. ToolBar를 통해서 DoneButton을 올리고 버튼을 누르면 resign되게 구현
2. TapGesture를 주고 endEditing 시에 내려가게 구현
- 귀찮아서 코드는 .. 안쳤지만 어떻게 하는지 알잖아?
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[Swift] 스위프트 성능 이해하기1 - Struct / Class (0) | 2022.07.29 |
---|---|
[iOS] DataSource, Delegate | TextView Placeholder | WebKit (0) | 2022.07.29 |
[iOS] 프로토콜 (0) | 2022.07.28 |
[iOS] '처음으로' 돌아가는 코드 | SceneDelegate에서 분기처리해주는 코드 (0) | 2022.07.27 |
[Swift] Property Observer - didSet / willSet (0) | 2022.07.27 |