Delegate나 DataSource를 사용하는 UI 컴포넌트
스위프트 상속과 프로토콜 채택
- class 자식:부모 {
}
- 부모 클래스는 하나만 가능하며 여러 개라면 나머지는 프로토콜
- class 클래스명:부모명, 프로토콜명{}
- 부모가 있으면 부모 다음에 표기
- class 클래스명:부모명, 프로토콜명1,프로토콜명2 {}
- class 클래스명:프로토콜명{}
- 부모가 없으면 바로 표기 가능
- class 클래스명:프로토콜명1, 프로토콜명2{}
- 클래스, 구조체, 열거형, extension에 프로토콜을 채택(adopt)할 수 있다.
- 상속은 클래스만 가능
TableView의 DataSource : UITableViewDataSource프로토콜
필수 메서드 2개
// Return the number of rows for the table.
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
} // 특정 섹션에 표시할 행의 개수
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Fetch a cell of the appropriate type.
let cell = tableView.dequeueReusableCell(withIdentifier: "cellTypeIdentifier", for: indexPath)
// Configure the cell’s contents.
cell.textLabel!.text = "Cell text"
return cell
} //특정 위치의 셀을 리턴
UITableViewDataSource프로토콜 : 선택적 메서드
- numberOfSections(in:)
테이블 뷰에 섹션 수 지정 - tableView(_:titleForHeaderInSection:)
각 섹션의 헤더에 표시될 텍스트 지정 - tableView(_:titleForFooterInSection:)
각 섹션의 푸터에 표시될 텍스트 지정 - tableView(_:canEditRowAt:)
셀을 삭제하거나 추가할 때 - tableView(_:canMoveRowAt:)
셀의 순서를 변경할 때
오늘 공부할 것 : UIViewTableView / UIViewTableViewCell
다음 코드에 오류가 뜨는 이유와 수정방법
과제 : 다음과 같이 변경해서 스크린샷
- section수:3, row수:5, UITableViewCell.CellStyle:subtitle,value1,value2
- detailTextLabel에 indexPath.description(section)출력
애플에서 제공하는 4개의 셀 디자인이 마음에 들지 않을 때 UITableViewCell을 추가
cell을 직접 만들 경우 identifier 필요: myCell
- dequeueReusableCell메서드에서 사용할 cell ID 지정
Cell을 관리할 swift파일 만들기 : Cocoa Touch Class선택
- [Swift File]선택하는 것보다 부모를 선택할 수 있어서 좋음
myCell과 관리할 클래스(myTableViewCell) 연결
- Identity inspector의 class부분 콤보 박스 아래쪽 방향 화살표 누려면 MyTableViewCell 선택 가능
- 주의 : 초보자들이 연결 안하는 실수 많이 함
적용된 두개의 Constraints 확인 (위쪽 : Label의 제약 / 아래쪽 : TableView의 제약)
원하는 파일이 아닐 경우 Automatic에서 변경
- MyTableViewCell.swift파일이 나오는 것이 정상인데, ViewController.swift 파일이 나올 경우 다음과 같이 변경
리턴형이 UITableViewCell이기 때문에 cell.myLabel으로 입력할 수 없다.
최종
참고자료 : 한성현 교수님 수업자료
'iOS프로그래밍실무 (3학년 1학기)' 카테고리의 다른 글
240410 iOS프로그래밍실무 6주차 (0) | 2025.04.10 |
---|---|
250327 iOS프로그래밍실무 4주차 (0) | 2025.04.02 |
250320 iOS프로그래밍실무 3주차 (0) | 2025.03.20 |
250313 iOS프로그래밍실무 2주차 (0) | 2025.03.19 |
250306 iOS프로그래밍실무 1주차 (1) | 2025.03.06 |