firstVC의 tableView를 구현한 지난 글에 이어,
secondVC의 cell을 구현하여 layout을 맞추고, tableView에 연결합니다.
#1 - Intro (goal setting)
#2 - UI Design (Codebase)
#3 - Api
#4 - tableview
#5 - secondVC
|| SelectedListTableVIewCell 생성 + 구현
우선 2nd VC의 UITableView에 들어갈 아래의 Cell을 만든다.
SelectedListTableViewCell 을 만들 때 앞서 만든 SearchResultTableViewCell을 약간 재활용했다.
SelectedListTableViewCell을 실행해보며 Cell 내의 UI 확인
SecondViewController에서 UITableView의 Delegate와 DataSource를 설정하고 구현
extension SecondViewController: UITableViewDelegate, UITableViewDataSource {
func tableSetup() {
selectedTable.delegate = self
selectedTable.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return selectedInfo.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = selectedTable.dequeueReusableCell(withIdentifier: "SelectedListTableViewCell", for: indexPath) as? SelectedListTableViewCell else { return UITableViewCell() }
let item = selectedInfo[indexPath.row]
cell.titleLabel.text = item.title
cell.authorLabel.text = item.authors
cell.priceLabel.text = item.price.stringValue
return cell
}
1. tableSetup() 메서드:
- selectedTable.delegate = self를 통해 SecondViewController 자신을 selectedTable의 delegate로 설정
- selectedTable.dataSource = self를 통해 SecondViewController 자신을 selectedTable의 dataSource로 설정
- 이를 통해 SecondViewController가 UITableView의 동작과 데이터 관리를 직접 제어할 수 있다.
2. tableView(_:numberOfRowsInSection:) 메서드:
- UITableViewDataSource 프로토콜의 필수 메서드
- 특정 섹션에 포함된 행(셀) 수를 반환
- 여기서는 selectedInfo.count를 반환하여 selectedInfo 배열의 개수만큼 행이 표시되도록 한다.\
3. tableView(_:cellForRowAt:) 메서드:
- UITableViewDataSource 프로토콜의 필수 메서드
- 이 메서드는 특정 인덱스 경로에 해당하는 셀을 반환
- 여기서는 selectedTable.dequeueReusableCell(withIdentifier:for:) 메서드를 사용하여 재사용 가능한 셀을 가져온다.
- 그리고 SelectedListTableViewCell 클래스로 다운캐스팅하여 셀의 속성(titleLabel, authorLabel, priceLabel)을 설정
- 최종적으로 구성된 셀을 반환 (return cell)
'iOS 앱 개발자 프로젝트 > iOS 심화' 카테고리의 다른 글
[iOS] bookStore app project (4) (0) | 2024.05.09 |
---|---|
[iOS] bookStore app project (3) (6) | 2024.05.08 |
[iOS] bookStore app project (2) (2) | 2024.05.07 |
[iOS] SnapKit (feat. SPM) (2) | 2024.05.05 |
[iOS] bookStore app project (1) (2) | 2024.05.04 |