Search
Duplicate

비플페이 간편결제 배너 데이터 없을 경우 영역 숨김

생성일
2024/07/24 23:33
태그
지혜로운 회사생활
비플페이
v1.8.9

비플페이 - 간편결제 배너 데이터 없을 경우 영역 숨김

[문제점]
간편결제 탭에 들어가면 /ONAF_001001.jct 가 실행되게 되는데,
BANNER_LIST 가 빈 배열로 던져질 경우, 위 사진처럼 여백이 생기는 문제가 있다.

️ [업무] BANNER_LIST가 빈 배열로 올 경우에 이 여백을 사라지게 하기

우선 간편결제 로직이 있는 EasyPaymentViewController에서 코드 확인
화면에 하나하나 다 테이블 뷰에서 셀들로 이루어져 있었다.
그럼 내가 수정해야 할 셀은 저 배너를 담당하는 EPBannerTableViewCell 이라는 것을 확인.
그리고 tableView 메서드에서 셀의 height를 구성하는 heightForRowAt 메서드와 cellForRowAt 메서드만 수정하면 왠지 구현할 수 있을 것 같아서 일단 시도해보았다.

heightForRowAt

bannerDataArr가 빈 값인지 확인하고, 빈 값이라면 셀의 높이를 0으로 설정
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if willShowSkeletonView { if indexPath.row == 0 { return CGFloat.getDynamicBannerCellHeight(designHeight: 80) + 5 } return UITableView.automaticDimension } if (self.viewModel?.uiModelData.count ?? 0) > indexPath.row { guard let modelData = self.viewModel?.uiModelData[indexPath.row] else{return UITableView.automaticDimension} switch modelData.type { case .배너Contents: return CGFloat.getDynamicBannerCellHeight(designHeight: 80) + 5 default: break } } return UITableView.automaticDimension }
Swift
복사
수정 전 코드
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if willShowSkeletonView { if indexPath.row == 0 { return CGFloat.getDynamicBannerCellHeight(designHeight: 80) + 5 } return UITableView.automaticDimension } if (self.viewModel?.uiModelData.count ?? 0) > indexPath.row { guard let modelData = self.viewModel?.uiModelData[indexPath.row] else{return UITableView.automaticDimension} switch modelData.type { case .배너Contents: let bannerDataArr = modelData.data as! [EPBannerCollectionViewCell.DataModel] if bannerDataArr.isEmpty { return 0 } return CGFloat.getDynamicBannerCellHeight(designHeight: 80) + 5 default: break } } return UITableView.automaticDimension
Swift
복사
수정 후 코드

cellForRowAt

bannerDataArr가 빈 값이라면 빈 셀을 반환
case .배너Contents: let bannerDataArr = modelData.data as! [EPBannerCollectionViewCell.DataModel] let cell = self.tableView.dequeueReusableCell(withIdentifier: "EPBannerTableViewCell") as! EPBannerTableViewCell cell.configureCell(dataArr: bannerDataArr) return cell
Swift
복사
case .배너Contents: let bannerDataArr = modelData.data as! [EPBannerCollectionViewCell.DataModel] if bannerDataArr.isEmpty { return UITableViewCell() } let cell = self.tableView.dequeueReusableCell(withIdentifier: "EPBannerTableViewCell") as! EPBannerTableViewCell cell.configureCell(dataArr: bannerDataArr) return cell
Swift
복사

 결과

이렇게 BANNER_LIST에 값이 없을 경우에는 배너이미지 셀을 사라지게 하고, 그 다음 셀이 나오고 있다.