[swift] DZNEmptyDataSet이란 무엇인가?

DZNEmptyDataSet은 테이블 뷰나 컬렉션 뷰에 대한 델리게이트를 제공하며, 이를 통해 빈 상태일 때 표시할 내용을 커스터마이징할 수 있습니다. 예를 들어, 데이터가 없을 때 “데이터가 없습니다”라는 메시지와 함께 이미지를 보여줄 수 있습니다.

DZNEmptyDataSet의 사용법은 간단합니다. 먼저, DZNEmptyDataSet을 프로젝트에 추가해야 합니다. 이 후에 테이블 뷰나 컬렉션 뷰의 델리게이트에 DZNEmptyDataSet의 메소드를 구현하면 됩니다. 이 메소드에서는 데이터가 없을 때 표시할 내용을 반환하면 됩니다.

다음은 Swift로 DZNEmptyDataSet을 사용하는 예시 코드입니다:

import DZNEmptyDataSet

class MyViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
    
    @IBOutlet weak var tableView: UITableView!
    var dataSource: [String] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
        tableView.emptyDataSetSource = self
        tableView.emptyDataSetDelegate = self
        
        // 데이터 소스 초기화
        
        // ...
    }
    
    // 테이블 뷰 데이터소스 메소드
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataSource.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = dataSource[indexPath.row]
        return cell
    }
    
    // DZNEmptyDataSet 델리게이트 메소드
    
    func title(forEmptyDataSet scrollView: UIScrollView!) -> NSAttributedString! {
        let attributes: [NSAttributedString.Key: Any] = [
            .font: UIFont.systemFont(ofSize: 15),
            .foregroundColor: UIColor.gray
        ]
        return NSAttributedString(string: "데이터가 없습니다", attributes: attributes)
    }
    
    func image(forEmptyDataSet scrollView: UIScrollView!) -> UIImage! {
        return UIImage(named: "no_data_image")
    }
}

위 예제에서는 DZNEmptyDataSet의 title(forEmptyDataSet:) 메소드를 구현하여 “데이터가 없습니다”라는 메시지를 반환하고, image(forEmptyDataSet:) 메소드를 구현하여 이미지를 반환합니다. 이런식으로 DZNEmptyDataSetSourceDZNEmptyDataSetDelegate의 다른 메소드를 구현하여 커스텀화할 수 있습니다.

더 많은 정보는 DZNEmptyDataSet 공식 GitHub 페이지를 참조하시기 바랍니다.