개발 진행 상황
- Search View Cotnroller Pagenation 구현
- PanModal 라이브러리 테스트
- CalnderView 예제 데이터 출력
이슈
- Search VC에 전달되는 API의 데이터의 total 개수가 제공되지 않아 paging에 대한 조건문을 작성하는 것에 대해 고민
고민한 내용
화면에 첫 진입 시, 10개(row)의 데이터가 화면에 저장이 된다!
그리고 화면이 스크롤이 되고, 셀이 재사용이 되면 paging이 될 텐데,
이때 새로운 데이터를 받아와 배열에 저장해 주어야 한다...?!
그렇다면 paging을 하기 위한 조건이 필요로 될 것이다!
우선 나는 MVVM 패턴을 적용하여 사용 중임을 밝힘!
일단, TableView를 사용하게 될 경우에는 UITableViewDataSourcePrefetching 프로토콜을 채택해야 한다.
공식문서를 우선 기재!

즉, 문서의 해석으로 접근하자면 코드상에서 셀의 경로가 dataList.count - 3 == item.row이라면
prefetch 데이터를 준비하면 될 것이다!
extension YourViewController: UITableViewDataSourcePrefetching {
func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {
for item in indexPaths {
if dataList.count - 3 == item.row && isEnd == true {
필요에 따라
내용 작성
}
}
}
}
또한 무한 스크롤을 예방하기 위해 prefetching을 종료하는 메서드를 함께 작성해 준다!
func isEnd(row: Int, page:Int) -> Bool {
isEnd 판단
}
회고
나와 같은 경우에는... 전체 데이터의 개수가 제공되지 않고, page와 row데이터가 제공되었다. 이때, pagenation이 진행됨에 따라 page를 증가하고, 증가된 데이터를 계속하여 배열에 추가하며 데이터의 전체 개수를 얻어오는 방식을 택했다!!!
이전에 학습한 내용임에도 end조건은 개별적으로 구성해야 하니... 이러한 로직을 떠올리는 게 쉽지 않았다 ㅜ.ㅜ
유연한 사고를 하도록... 노력하기...!
TODO
- CRUD 구성
- 데이터 저장
- ScrollView 구현
'개발 일지' 카테고리의 다른 글
| [당연]CRUD (0) | 2024.03.21 |
|---|---|
| [당연] BottomSheet (0) | 2024.03.16 |