iOS 개발일지
0727 새싹 18회차 정리 본문
iOS 앱 개발자 데뷔 과정 18회차
#1. Checklist
- Property Observer
프로퍼티 옵저버는 저장 프로퍼티에서 사용되며, 프로퍼티의 값을 관찰하다 변경되었을 때 자동으로 호출된다.
willSet : 값이 저장되기 직전에 호출되며 newValue를 통해 새로 저장될 값을 알 수 있다.
didSet : 값이 저장된 직후에 호출되며 oldVlaue를 통해 저장되기 전의 원래 값을 알 수 있다.
- struct -> mutating func
구조체 내에서 프로퍼티를 변경하려고 하면 mutating 키워드를 함수 앞에 붙여야 한다.
- class -> static func vs class func
슈퍼클래스의 타입 메서드를 재정의해서 쓰고 싶다면, static 대신 class를 사용하면 된다.
당연하게도 구조체에서는 사용이 불가능한데, 구조체는 상속이 불가능하기 때문이다.
- Handling button tap inside UITableView Cell
UIButton을 클릭했을 때 체크박스 이미지가 채워지거나 비워지게 구현 해 보았다.
이 작업을 cell 파일에서 할 경우, 한 번에 여러개의 체크박스가 선택되거나 하는 문제가 있을 수 있어 컨트롤러 파일에 작성한다.
이렇게 cellForRowAt에서 cell의 sender.tag를 indexPath.row와 맞춰 놓으면 cellForRowAt 메서드 밖에서도 indexPath.row에 접근하는 것과 비슷하게 활용할 수 있다.
그리고 #selector를 통해 버튼을 눌렀을 때 동작할 함수를 작성한다.
selector 함수 내에서 실질적인 동작을 작성해도 되지만, cellForRowAt 메서드 내에 작성할 경우 더 간결해진다.
마지막으로 바뀐 데이터를 view에 보여줘야 하는데, 체크박스가 클릭되는 셀 하나만 변경이 일어나므로 reloadData는 비효율적이다.
이렇게 reloadRows으로 클릭된 셀만 업데이트 할 수 있다.
- UIViewController + UITableView
테이블뷰컨트롤러가 아닌, 뷰컨트롤러 위에 별도로 테이블뷰를 등록하면 더 자유로운 화면 구성이 가능하다.
예를 들어 서치바가 내려가지 않게 하려면 뷰컨트롤러 상단에 서치바를 넣고, 그 아래에 테이블뷰를 넣으면 된다.
이렇게 구성하려면 몇 가지 고려해야 할 요소가 늘어난다.
1. VC에 UITableViewDelegate, UITableViewDataSource 프로토콜 채택
2. 테이블뷰 아웃렛 연결
3. 1번과 2번을 연결
여기서 1, 2번은 정말 채택하고 연결하면 끝이고, 3번의 코드를 잠깐 살펴보자.
delegate와 dataSource를 테이블뷰 아웃렛과 연결시켜 주는 코드이다.
self는 VC Class 자신을 의미하며, 해당 테이블뷰의 delegate와 dataSource를 담당해줘~ 정도로 생각하면 될 것 같다.
그리고 이번에는 셀을 XIB 파일로 만들었기 때문에, register 메소드를 통해 테이블뷰에 셀을 등록하는 작업도 해줘야 한다.
- XIB
TableView에 연결할 셀 파일을 만들 때, Also create XIB file이라는 옵션이 있다.
여기서 체크박스를 활성화시키면
이렇게 XIB 파일이 만들어지고, 여기서 Cell을 별도로 작업할 수 있다.
그리고 보조창이 매우 잘 나온다!!
xib로 만들면 Custom Class가 자동으로 지정되어있기 때문에 identifier만 설정해주면 된다.
#2. Assignment
- 환율 변동 프로그램 만들기참고 자료에는 currentKRW 라는 프로퍼티가 없었지만, newValue를 바로 KRW에 반영할 수가 없어 임의로 만들었다.
'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0729 새싹 20회차 정리 (0) | 2022.07.29 |
---|---|
0728 새싹 19회차 정리 (0) | 2022.07.28 |
0726 새싹 17회차 정리 (0) | 2022.07.26 |
0725 새싹 16회차 정리 (0) | 2022.07.25 |
0724 1차 평가과제 (3주차) (0) | 2022.07.24 |