[swift] DZNEmptyDataSet을 사용하여 빈 상태뷰의 레이아웃 변경하기

먼저, DZNEmptyDataSet을 프로젝트에 추가해야 합니다. CocoaPods를 사용하고 있다면 Podfile에 다음을 추가합니다.

pod 'DZNEmptyDataSet'

그리고 pod install 명령어를 실행하여 라이브러리를 설치합니다.

다음으로, UITableViewDelegate 또는 UICollectionViewDelegate를 구현하는 클래스에서 다음 메소드들을 구현해야 합니다.

func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
    let attributes = [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18), 
                      NSAttributedString.Key.foregroundColor: UIColor.gray]
    return NSAttributedString(string: "데이터가 없습니다", attributes: attributes)
}

func description(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
    let attributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14), 
                      NSAttributedString.Key.foregroundColor: UIColor.lightGray]
    return NSAttributedString(string: "데이터를 불러올 수 없습니다.", attributes: attributes)
}

func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
    return UIImage(named: "empty_state_image")
}

func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? {
    let attributes = [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 16), 
                      NSAttributedString.Key.foregroundColor: UIColor.blue]
    return NSAttributedString(string: "다시 시도하기", attributes: attributes)
}

func emptyDataSet(_ scrollView: UIScrollView, didTap button: UIButton) {
    // 버튼을 눌렀을 때 실행되는 동작을 구현합니다.
    // 데이터를 다시 로딩하거나 관련된 작업을 수행할 수 있습니다.
}

위의 메소드들은 각각 상태뷰에 보여줄 제목, 설명, 이미지, 버튼의 타이틀을 지정합니다. emptyDataSet(_:didTap:) 메소드는 버튼을 눌렀을 때 실행될 동작을 구현하는 곳입니다.

또한, UITableViewDelegate 또는 UICollectionViewDelegate를 채택한 클래스에 다음 코드를 추가하여 DZNEmptyDataSet과 관련된 설정을 해 줍니다.

tableView.emptyDataSetDelegate = self
tableView.emptyDataSetSource = self

이제 빈 상태뷰의 레이아웃을 변경하기 위한 모든 준비가 되었습니다. 원하는 디자인으로 상태뷰의 제목, 설명, 이미지, 버튼을 설정하고, 동작을 구현하면 됩니다.

DZNEmptyDataSet에 대한 더 자세한 내용은 아래의 링크를 참고해 주세요.