비플페이 - 간편결제 배너 데이터 없을 경우 영역 숨김
[문제점]
간편결제 탭에 들어가면 /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에 값이 없을 경우에는 배너이미지 셀을 사라지게 하고, 그 다음 셀이 나오고 있다.