리스트뷰를 구현하기 위한 방법은 테이블뷰와 컬렉션뷰가 있다
기본 구현 난이도는 별 차이가 없지만 컬렉션뷰가 그리드 표현의 자유도가 높기 때문에 레이아웃 형식이 더 다양해진 요즘엔 컬렉션뷰를 많이 사용한다.
그러나 내가 나중에 어떤 쪽을 작업하게될지 모르므로 둘 다 해볼 것이다. 정말 둘은 구현방식의 큰 차이가 없다
✅구현되어야 할 것
- presentation, data, layout
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}// 몇개를 표현할래? -> 아이템갯수만큼
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
cell.textLabel?.text = items[indexPath.row]
return cell
}//무엇을 표현?
🔥🔥---------layout part--------🔥🔥
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let totalCellHeight = cellHeight * CGFloat((items.count + numberOfColumns - 1) / numberOfColumns)
let totalSpacingHeight = CGFloat(numberOfColumns - 1) * 10 // 셀 사이의 간격
return (totalCellHeight + totalSpacingHeight) / CGFloat(items.count)
}//어떻게 표현? TableView의 높이를 3x3 그리드로 설정하기 위해 셀의 높이를 조정
}
나는 오늘 업비트 화면을 따라해볼 것이다.
cmd + shift + L
-> TableView 꽉차게 넣고 다시추가-> TableViewCell를 그 안에 넣어줌그러나 모든 요소의 배경색상을 다 똑같은 색상으로 지정했음에도 불구하고 리스트부분만 색상이 달라보인다. 😠😠😠
해결방법은 Content View의 배경색상은 지정하지 않고 Default로 놔두었다
@IBOutlet weak var 업비트테이블뷰: UITableView!
let 업비트리스트: [CoinList] = CoinList.list
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 업비트리스트.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = 업비트테이블뷰.dequeueReusableCell(withIdentifier: "upbitCell", for: indexPath)as? upbitCell else {
return UITableViewCell()
}
let 코인 = 업비트리스트[indexPath.item]
cell.configure(코인)
cell.backgroundColor = tableView.backgroundColor
return cell
}
}
swift는 한글로 이름을 정해도되고 한자도되고 일본어도된다. 아마 애플이 정식서비스하는 나라라면 그 외에 외국어도 다 될 것 같다.
실제 서비스할 프로젝트에서는 그러면 안되겠지만 학습하는 단계이고 구조파악을 위해 한글로 이름을 정해도 문제없다. 눈에 잘 띄고 이름짓기도 편하고 좋기 때문이다.
갈 길이 멀지만 리스트부분만 색이 튀던 문제는 없어졌고 데이터도 잘 연결되었음을 확인할 수 있다