To Do List 앱을 개발중에, UITableView
에 데이터가 없을 때 "할 일을 추가하라"는 메시지를 중앙에 표시하고 싶었다.
(예를 들면, 아래 배민의 장바구니 같은?)

하지만 UITableView
에는 Empty State를 자동으로 처리하는 기능이 없기에 아래의 방법으로 직접 구현을 시도했다.
UITableViewCell
을 만들어서 Empty 상태의 메시지 추가: 사용자가 리스트를 추가할 경우 기존 셀을 지워야하는 불필요한 리소스 발생Header View
또는Footer View
에 메시지 추가: 마찬가지로 불필요한 리소스 발생
해결 방안
UITableView
의backgroundView
에UILabel
설정func emptyStateMessage() { if tasks.isEmpty { // 데이터가 없을 경우 let messageLabel = UILabel() messageLabel.text = "아직 할 일이 없어요." messageLabel.textAlignment = .center messageLabel.font = UIFont.systemFont(ofSize: 18, weight: .medium) messageLabel.textColor = .gray messageLabel.numberOfLines = 0 tableView.backgroundView = messageLabel } else { tableView.backgroundView = nil // 데이터가 있으면 메시지 제거 } }
UITableView
의 데이터가 업데이트 될 때 함수 호출func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { emptyStateMessage() // 데이터 변경 시 Empty Message 업데이트 return tasks.count }